Min. ports needed for headless AWT/Swing

Ronald Klop ronald-lists at klop.ws
Wed Jul 1 12:54:19 UTC 2020


 
Van: Aryeh Friedman <aryeh.friedman at gmail.com>
Datum: woensdag, 1 juli 2020 14:36
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 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

Good that it is solved. Would you mind sharing what the solution was?


More information about the freebsd-java mailing list