Date: Wed, 1 Jul 2020 10:26:59 -0400 From: Aryeh Friedman <aryeh.friedman@gmail.com> To: Matthew Seaman <matthew@freebsd.org> Cc: freebsd-java@freebsd.org Subject: Re: Min. ports needed for headless AWT/Swing Message-ID: <CAGBxaXn4-_OnPqUSWPFrf61odjDPDRO2v5cYZS=E67_s42jQpQ@mail.gmail.com> In-Reply-To: <ebed2112-82ef-e127-b5d8-5e342f091e89@infracaninophile.co.uk> References: <CAGBxaXnf=Q0Df403nRpsCVudiN56KD=rKxGtbjQAHePVoDnEFA@mail.gmail.com> <417840b4-1acc-ac20-2127-0754bce1fd68@gmx.net> <CAGBxaXkpFimZFOX8WpkZvip9T%2BTnUt6sxg9jv2YsMzU2vjfBBw@mail.gmail.com> <310397709.40.1593597140363@localhost> <CAGBxaXniZBM_Cr-SLvx_YxQ5O3w=pp6gzkEkvuY3Rc6otsb2ew@mail.gmail.com> <745314036.25.1593604704120@localhost> <CAGBxaXkigh6hG66uobhnhO7DqQs3_Pn5xSDn2sL_MEAotZ--qg@mail.gmail.com> <1960743780.71.1593606645185@localhost> <CAGBxaXnKjm6720UFprpOG5EdLSMvgA35P3G2RTS1QbSbcrFiHg@mail.gmail.com> <1075431299.4.1593608054346@localhost> <CAGBxaXko_YhR_3O7sdqbO7GLrTN_RpVrJDLqwR_xpT_8zG5JLg@mail.gmail.com> <ebed2112-82ef-e127-b5d8-5e342f091e89@infracaninophile.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jul 1, 2020 at 10:03 AM <matthew@freebsd.org> wrote: > On 01/07/2020 13:56, Aryeh Friedman wrote: > > On Wed, Jul 1, 2020 at 8:54 AM Ronald Klop <ronald-lists@klop.ws> wrote: > > > >> > >> > >> *Van:* Aryeh Friedman <aryeh.friedman@gmail.com> > >> *Datum:* woensdag, 1 juli 2020 14:36 > >> *Aan:* Ronald Klop <ronald-lists@klop.ws> > >> *CC:* freebsd-java@freebsd.org, Michael Osipov <1983-01-06@gmx.net> > >> *Onderwerp:* Re: Min. ports needed for headless AWT/Swing > >> > >> > >> > >> On Wed, Jul 1, 2020 at 8:30 AM Ronald Klop <ronald-lists@klop.ws> > wrote: > >> > >>> > >>> Van: Aryeh Friedman <aryeh.friedman@gmail.com> > >>> Datum: woensdag, 1 juli 2020 14:03 > >>> Aan: Ronald Klop <ronald-lists@klop.ws> > >>> CC: freebsd-java@freebsd.org, Michael Osipov <1983-01-06@gmx.net> > >>> Onderwerp: Re: Min. ports needed for headless AWT/Swing > >>>> > >>>> > >>>> > >>>> On Wed, Jul 1, 2020 at 7:58 AM Ronald Klop <ronald-lists@klop.ws> > >>> wrote: > >>>>> > >>>>> > >>>>> Van: Aryeh Friedman <aryeh.friedman@gmail.com> > >>>>> Datum: woensdag, 1 juli 2020 13:33 > >>>>> Aan: Ronald Klop <ronald-lists@klop.ws> > >>>>> CC: freebsd-java@freebsd.org, Michael Osipov <1983-01-06@gmx.net> > >>>>> Onderwerp: Re: Min. ports needed for headless AWT/Swing > >>>>>> > >>>>>> > >>>>>> > >>>>>> On Wed, Jul 1, 2020 at 5:52 AM Ronald Klop <ronald-lists@klop.ws> > >>> wrote: > >>>>>>> > >>>>>>> Van: Aryeh Friedman <aryeh.friedman@gmail.com> > >>>>>>> Datum: maandag, 29 juni 2020 20:59 > >>>>>>> Aan: Michael Osipov <1983-01-06@gmx.net> > >>>>>>> CC: freebsd-java@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@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@freebsd.org mailing list > >>>>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java > >>>>>>>>> To unsubscribe, send any mail to " > >>> freebsd-java-unsubscribe@freebsd.org" > >>>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> -- > >>>>>>>> Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org > >>>>>>>> _______________________________________________ > >>>>>>>> freebsd-java@freebsd.org mailing list > >>>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java > >>>>>>>> To unsubscribe, send any mail to " > >>> freebsd-java-unsubscribe@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@dnixon:~ # X -listen-tcp > >>>> X: Command not found. > >>>> root@dnixon:~ # ls /usr/local/bin/X* > >>>> ls: No match. > >>>> root@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@dnixon:~ # ls /usr/local/sbin/x* > >>>> ls: No match. > >>>> root@dnixon:~ # ls /usr/local/sbin/X* > >>>> ls: No match. > >>>> root@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? > >> > > > > Adding -- -listen tcp to my call to startx on the desktop (I was confused > > about which machine was the server and which was the client since the > > relationship is reverse of the normal order.... i.e. the server is the > > local machine and the client is the remote one not the other way around > for > > X) > > > > > > Be aware that running remote X applications against a local X server > will transmit all of the X related traffic across the network in the > clear -- which is roughly as bad as running old-style rsh(1). > > That may or may not be a problem for your use case, but in general look > into tunnelling your X traffic across an SSH session -- see the > description of the `-X` and `-Y` flags in ssh(1). SSH basically sets > up a port forwarding from the loopback on the (remote) X client to the > (local) X server on your desktop, and will set DISPLAY and XAUTHORITY to > appropriate values for you automatically. Plus you don't need to enable > a tcp listener for X, which in itself just offers up a massively > enlarged attack surface. > 1. ssh -X and -Y were not working (tried them first). 2. It is only used on a wired LAN (no WiFi at all) on a double NAT'ed (both private IP spaces on different 10.X.X.X and 192.168.X.X connection both via physically separate routers [cable modem and a desktop router]) between two machines on the same switch (the only machines on the switch) in my home office that only me and my SO use (they are also a Java programmer and wrote the encryption front end library we use for our stuff so I trust them completely) 3. There are no applications on the VM that make arbitrary network connections without direct user approval (i.e. no mail server/client and/or web browser) > > Cheers, > > Matthew > _______________________________________________ > freebsd-java@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-java > To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd.org" > -- Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGBxaXn4-_OnPqUSWPFrf61odjDPDRO2v5cYZS=E67_s42jQpQ>