I'm running Ubuntu 9.10 and trying to run a Java program I wrote whose source code is located on a remote machine. I'm using ssh to connect using the following command from the terminal:
ssh -X username#hostname
When running the program, one of the GUI frames has its buttons missing from view, but they are clickable and work as expected when I can guess accurately where they are. Running the code from my local machine they are present, and running from another windows machine using X-Windows they are present. Been trying to solve this problem for a few hours now but to no avail. Anyone have any helpful insight how to resolve this issue?
Thanks!
Are you using both Java 5.0 Swing toolkit and Compiz window manager? They tend to not like each other. Try use Java 6.0 or temporarily disable window effects.
Related
I am trying to experiment a bit with JSch library in order to create a simple Java app that gets a remote shell.
I used this example as reference:
http://www.jcraft.com/jsch/examples/Shell.java.html
which works fine but autocompletion of commands is not supported.
I am executing my jar from cmd/Windows and the remote shell is a Linux machine.
I don't get any error messages or warnings.
In the example it says something about lacking terminal-emulation. Is this maybe the issue? Any advice on how I can bypass this issue will be appreciated.
For autocompletion, you need to implement terminal emulation. It is not implemented by JSch.
See also Displaying Midnight Commander screen in JTextPane.
I'm running MATLAB 2013b on Ubuntu, and I'm having many problems with the display of windows. For instance, when I try to start GUIDE (typing "guide" at the command prompt), I get just an empty rectangle.
Looks like some kind of incompatibility between MATLAB, Ubuntu and Java, but I'm not sure about how to proceed... any ideas?
... well, just in case somebody comes across the same problem, I'll leave my answer: it's just a question of giving up Unity in Ubuntu and start the session with the "classical gnome desktop (no effects)" option.
I have an Applet and when I try to run it on my laptop, a headless exception is thrown by Java at the line where a JFrame is created. Now I know why the JFrame normally causes the exception but my computer was not in headless mode to begin with. I'm also still not sure what headless mode entails exactly.
I'm running Ubuntu and have a pretty recent version of java.
Also, I have successfully created JFrames and such in Eclipse when running Windows on my laptop (if that helps).
Have you tried setting java.awt.headless=true? I have done this once before on Solaris with no x-server in order to use the java.awt print libraries. It worked a treat. However it was more than five years ago and I don't have the source handy.
See Setting java.awt.headless=true programmatically
PS Are you on Ubuntu server or desktop? If the latter, I'd question why Java thinks you are headless.
Look # following link that might help:
http://www.theserverside.com/discussions/thread.tss?thread_id=52535
I want to facilate my client to run java program through UNIX command prompt using some shells. It'll look more effecient if they would be able to give input through some GUI. So it can be tested immedietely. I dont want prefer unix commands fro input.
Can somebody tell me how to run Java swing or applet programs in UNIX?
As Thompson mentioned, looking at Java Web Start could be a good idea.
Otherwise, if what you want is to execute, using a *NIX-like terminal, an application located on a remote host and have it rendered on your local display, then you need to do a few things:
you need a working X server on the local machine
you need to export the DISPLAY to the local machine (you can do this by setting up the DISPLAY environment variable on the remote system)
then you need to start your Java app from the command-line.
Hope this helps.
Here's an example of how to export your display over SSH.
Java programs use the X windows system (just like any other GUI on Unix). Assuming your X windows system is setup correctly, you should just open up a JFrame and do your GUI coding just like Windows.
Using the command prompt to launch a GUI is so last millennium. If you can distribute from a server, look into Java Web Start to provide the end-user with a simple and painless install.
Oh, and of course, follow Starkey's advice to throw a JFrame into the mix.
If you have an X-server installed locally, Putty can tunnel the X11-graphics generated by Linux Java back from the server to your local machine, and view it there.
If the above doesn't make sense to you, your next best bet is either running the Java code locally with Java Web Start (and code it to communicate back to the remote server) or run Servlets inside a Java Web Server running on the remote host.
In other words, GUI over a Putty connection is not something which is easily done.
I am using Tomcat 5.5.23, JDK 1.5 on HP Unix. We have an application which when invoked form tomcat starts an applet. It was working fine till JDK 1.4. But now we have moved to JDK 1.5 and the applet does not start. The exception thrown is -
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
I then added JAVA_OPTS="-Djava.awt.headless=true" to catalina.sh file. But still I get the same Headless exception, but this time without the X11 Display message.
Any help would be appreciated.
Odd.. you're trying to run an applet (I assume you are talking about a subclass of java.awt.Applet) inside tomcat? Generally this won't work because there's no display on which to display the applet.
Assuming you don't want the applet to display anywhere and you just want to execute some portion of it programmatically, you may be able to get by using a virtual X server such as Xvfb or Xvnc. Once you have Xvfb or Xvnc running on your host running tomcat, you might try to set the DISPLAY inside the tomcat startup scripts to use the display of the virtual X server.
-Djava.awt.headless=false
add above in your Tomcat startup script. it will work 100%
You are maybe using something in your Java code that can not work on a headless system, such as graphics components (Swing objects, images, etc.). Some of these components, instead of being directly handled by Java, are handled by underlying platform (Windows kernel itself or X-Window server on Unix). This way the overall performance of application is boosted.
So the question now is, ok if it was working on Java 1.4, why doesn't it work on 1.5? My bet, given the peformance boost since Java 1.2 that Swing has received over time, is that Sun has moved the management of some graphic objets to OS level to increase performance. So if you can not stick to 1.4, then you should revise your code.
This good article will help you understand how to modify your application to make it headless-friendly.
Applets are going to have a hard-time running server-side. They are designed to run inside of a container, such as a web browser. The exception is getting thrown most likely because the applet is trying to draw it's GUI -- and the server is providing no support for this. I'm surprised that it worked in JDK 1.4 -- I don't know what changed between the two revisions which would have affected this.
You may also have to install the x11 libraries, or at least explicitly export the path to them.
/usr/X11R6/lib
Open $CATALINA_HOME/bin/startup.sh file with your preferred text browser
Paste this line export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=false" at the beginning of the file
Save and close the file
Restart Tomcat
In spring boot with database access, when you specify asterisks: **** as username and password, it will try to prompt the user for a username and password (you read that right), and it will throw this HeadlessException if it's not a gui application.