Min. ports needed for headless AWT/Swing

Aryeh Friedman aryeh.friedman at gmail.com
Wed Jul 1 12:36:30 UTC 2020


On Wed, Jul 1, 2020 at 8:30 AM Ronald Klop <ronald-lists at klop.ws> wrote:

>
> Van: Aryeh Friedman <aryeh.friedman at gmail.com>
> Datum: woensdag, 1 juli 2020 14:03
> Aan: Ronald Klop <ronald-lists at klop.ws>
> CC: freebsd-java at freebsd.org, Michael Osipov <1983-01-06 at gmx.net>
> Onderwerp: Re: Min. ports needed for headless AWT/Swing
> >
> >
> >
> > On Wed, Jul 1, 2020 at 7:58 AM Ronald Klop <ronald-lists at klop.ws> wrote:
> >>
> >>
> >> Van: Aryeh Friedman <aryeh.friedman at gmail.com>
> >> Datum: woensdag, 1 juli 2020 13:33
> >> Aan: Ronald Klop <ronald-lists at klop.ws>
> >> CC: freebsd-java at freebsd.org, Michael Osipov <1983-01-06 at gmx.net>
> >> Onderwerp: Re: Min. ports needed for headless AWT/Swing
> >>>
> >>>
> >>>
> >>> On Wed, Jul 1, 2020 at 5:52 AM Ronald Klop <ronald-lists at klop.ws>
> wrote:
> >>>>
> >>>> Van: Aryeh Friedman <aryeh.friedman at gmail.com>
> >>>> Datum: maandag, 29 juni 2020 20:59
> >>>> Aan: Michael Osipov <1983-01-06 at gmx.net>
> >>>> CC: freebsd-java at freebsd.org
> >>>> Onderwerp: Re: Min. ports needed for headless AWT/Swing
> >>>>>
> >>>>> On Mon, Jun 29, 2020 at 2:28 PM Michael Osipov <1983-01-06 at gmx.net>
> wrote:
> >>>>>
> >>>>> > Am 2020-06-29 um 17:43 schrieb Aryeh Friedman:
> >>>>> > > I have a java application that works fine with setenv DISPLAY
> :0.0 on my
> >>>>> > > desktop FreeBSD 12.1 (amd64) [with Xfce4] but when I attempt to
> run the
> >>>>> > > same app on a VM that has the minimum ports needed to install
> OpenJDK 8
> >>>>> > and
> >>>>> > > Tomcat I get an exception saying that it can't connect to the X
> server
> >>>>> > even
> >>>>> > > though I did setenv DISPLAY desktop:0.0 (and xhost + on the
> desktop).
> >>>>> > > Note it is the same user on both machines (NIS/NFS password
> DB/home dirs)
> >>>>> > > doing the running on both machines but is a different user then
> the one
> >>>>> > > logged in at the console (I do all my development in a separate
> account)
> >>>>> >
> >>>>> > Are you look for "-Djava.awt.headless=true"?
> >>>>> >
> >>>>>
> >>>>> Since this is a screen capture/recording program (which I am the
> developer)
> >>>>> I need to be able to capture the console (running X) that I am
> currently
> >>>>> on.   So the question is what is the minimum set of ports/packages I
> need
> >>>>> to install on the VM to make it see and X server?   It should be
> noted the
> >>>>> program has no GUI but does use java.awt.Robot#createScreenCapture
> (using
> >>>>> the full screen resolution as it's bounds) individual frames of the
> longer
> >>>>> video.
> >>>>>
> >>>>> Here is the specific exception I am attempting to fix:
> >>>>> On desktop (192.168.11.20)
> >>>>> % xhost +
> >>>>>
> >>>>> On VM (192.168.11.4):
> >>>>> % setenv DISPLAY 192.168.11.20:0.0
> >>>>> % java
> >>>>>
> -javaagent:/usr/local/share/java/classes/jacocoagent.jar=destfile=/usr/home/aryeh/fnwe-scap-1a1.C036/jacoco.exec,jmx=true,excludes=thistest/*:test/*
> >>>>> -cp
> >>>>>
> /usr/home/aryeh/fnwe-scap-1a1.C036/scrap/www/WEB-INF/lib/fnwe-scap-1a1.jar:/usr/local/share/java/classes/thisTest.jar:/usr/local/share/java/classes/pcCommon.jar:/usr/local/share/java/classes/pcUtil.jar
> >>>>> test.TestMain
> >>>>>
> >>>>> Result of the jvm invocation on the VM (not it works no problem
> su(do)'ing
> >>>>> to another account on the desktop if I do setenv DISPLAY :0.0):
> >>>>>
> >>>>> Caused by: java.awt.AWTError: Can't connect to X11 window server
> using
> >>>>> '192.168.11.20:0.0' as the value of the DISPLAY variable.
> >>>>> at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
> >>>>> at
> sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
> >>>>> at
> sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
> >>>>> at java.security.AccessController.doPrivileged(Native Method)
> >>>>> at
> sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
> >>>>> at java.lang.Class.forName0(Native Method)
> >>>>> at java.lang.Class.forName(Class.java:264)
> >>>>> at
> java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
> >>>>> at
> >>>>>
> java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
> >>>>> at test.scap.TestVideoFrame.testCaptureFrame(TestVideoFrame.java:76)
> >>>>>
> >>>>> _______________________________________________
> >>>>> > freebsd-java at freebsd.org mailing list
> >>>>> > https://lists.freebsd.org/mailman/listinfo/freebsd-java
> >>>>> > To unsubscribe, send any mail to "
> freebsd-java-unsubscribe at freebsd.org"
> >>>>> >
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org
> >>>>> _______________________________________________
> >>>>> freebsd-java at freebsd.org mailing list
> >>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java
> >>>>> To unsubscribe, send any mail to "
> freebsd-java-unsubscribe at freebsd.org"
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> Hi,
> >>>>
> >>>> Can you start any other X application on the VM using the DISPLAY
> setting? Like /usr/ports/x11/xeyes. Than you know if it is something with X
> instead of something with Java. I guess it is something with X.
> >>>> I guess your desktop is not listening for external connections to the
> X server or your routing between the VM and the desktop does not work.
> >>>> Or start a X server in the VM and use DISPLAY=:0.0 again.
> >>>
> >>>
> >>> Don't have any X components installed except for the ones required by
> "make/make install" on openjdk8.   The reason for this post in the first
> place was to figure out the minimum set of ports needed to get a working
> DISPLAY variable in the first place.
> >>>
> >>>
> >>> --
> >>> Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org
> >>
> >> I'm 99% sure you don't need any additional ports to get a working
> DISPLAY variable.
> >>
> >> It will probably help to start your X server with "-listen tcp". But I
> don't have enough information to be sure about that and how to configure
> that in your setup.
> >
> >
> > I think that might work if in fact there was an X server on the VM:
> >
> > root at dnixon:~ # X -listen-tcp
> > X: Command not found.
> > root at dnixon:~ # ls /usr/local/bin/X*
> > ls: No match.
> > root at dnixon:~ # ls /usr/local/bin/x*
> > /usr/local/bin/x265 /usr/local/bin/xicclu /usr/local/bin/xmlcatalog
> /usr/local/bin/xslt-config
> > /usr/local/bin/xaegis /usr/local/bin/xjc /usr/local/bin/xmlcatmgr
> /usr/local/bin/xsltproc
> > /usr/local/bin/xft-config /usr/local/bin/xkbcomp /usr/local/bin/xmllint
> /usr/local/bin/xsubpp
> > /usr/local/bin/xgettext /usr/local/bin/xml2-config /usr/local/bin/xmlwf
> /usr/local/bin/xxd
> > root at dnixon:~ # ls /usr/local/sbin/x*
> > ls: No match.
> > root at dnixon:~ # ls /usr/local/sbin/X*
> > ls: No match.
> > root at dnixon:~ # java -version
> > openjdk version "1.8.0_252"
> > OpenJDK Runtime Environment (build 1.8.0_252-b09)
> > OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
> >
> >
> > --
> > Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org
>
> In an earlier message you talked about "setenv DISPLAY 192.168.11.20:0.0".
> That is the IP address of your desktop. So the X server must be running on
> your desktop.
>
> You want the VM to screencapture the screen of the desktop? Or do you want
> the VM to screencapture the screen of the VM?
>

On the desktop... finally got it to capture the screeen on the desktop via
what I tried above but now have a second problem with is the audio capture
is there anyway to make the following Java snippet work with a remote mic
(works fine on the desktop with a local mic on dsp2.0)?

                fmt=new AudioFormat(160000,8,2,true,true);
                mic=AudioSystem.getTargetDataLine(fmt);
                mic.open(fmt);
                mic.start();

-- 
Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org


More information about the freebsd-java mailing list