Jgo 5.0 on unix

Hi,

We’re running JGO5.0 on a unix server. We’ve ported some existing
client-side (windows) code to allow our server code to generate images
of the jgo views.

Not sure if the “known issues” with JGo 5.0 and headless servers is the root cause here.

Below is the stack trace:

java.lang.InternalError: Can't connect to X11 window

server using ‘:0.0’ as the value of the DISPLAY variable.

Start server side stack trace:
java.lang.InternalError: Can’t connect to X11 window server using ‘:0.0’ as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnv ironment.java:134)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Gra phicsEnvironment.java:62)
at java.awt.Font.initializeFont(Font.java:308)
at java.awt.Font.(Font.java:344)
at javax.swing.plaf.metal.DefaultMetalTheme$FontDelegate.getFon t(DefaultMetalTheme.java:195)
at javax.swing.plaf.metal.DefaultMetalTheme.getFont(DefaultMeta lTheme.java:153)
at javax.swing.plaf.metal.DefaultMetalTheme.getControlTextFont( DefaultMetalTheme.java:129)
at javax.swing.plaf.metal.MetalLookAndFeel$FontActiveValue.crea teValue(MetalLookAndFeel.java:1399)
at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:199)
at javax.swing.UIDefaults.get(UIDefaults.java:129)
at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
at javax.swing.UIDefaults.getFont(UIDefaults.java:349)
at javax.swing.UIManager.getFont(UIManager.java:491)
at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.jav a:89)
at javax.swing.plaf.basic.BasicButtonUI.installDefaults(BasicBu ttonUI.java:124)
at javax.swing.plaf.metal.MetalButtonUI.installDefaults(MetalBu ttonUI.java:53)
at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI .java:60)
at javax.swing.JComponent.setUI(JComponent.java:449)
at javax.swing.AbstractButton.setUI(AbstractButton.java:1616)
at javax.swing.JButton.updateUI(JButton.java:119)
at javax.swing.AbstractButton.init(AbstractButton.java:1952)
at javax.swing.JButton.(JButton.java:109)
at javax.swing.JButton.(JButton.java:64)
at javax.swing.plaf.basic.BasicArrowButton.(BasicAr rowButton.java:41)
at javax.swing.plaf.basic.BasicArrowButton.(BasicAr rowButton.java:51)
at javax.swing.plaf.metal.MetalScrollButton.(MetalS crollButton.java:46)
at javax.swing.plaf.metal.MetalScrollBarUI.createIncreaseButton (MetalScrollBarUI.java:124)
at javax.swing.plaf.basic.BasicScrollBarUI.installDefaults(Basi cScrollBarUI.java:140)
at javax.swing.plaf.metal.MetalScrollBarUI.installDefaults(Meta lScrollBarUI.java:74)
at javax.swing.plaf.basic.BasicScrollBarUI.installUI(BasicScrol lBarUI.java:102)
at javax.swing.JComponent.setUI(JComponent.java:449)
at javax.swing.JScrollBar.setUI(JScrollBar.java:185)
at javax.swing.JScrollBar.updateUI(JScrollBar.java:205)
at javax.swing.JScrollBar.(JScrollBar.java:139)
at javax.swing.JScrollBar.(JScrollBar.java:154)
at com.nwoods.jgo.JGoView.init(Unknown Source)
at com.nwoods.jgo.JGoView.(Unknown Source)
at com.pfizer.epharm.analysisworkbench.ui.analysistree.EPharmJG oView.(EPharmJGoView.java:152)

I’ve verified that the machine has an x-server running (and I can run
other x-apps from a standard telnet session without environment
modification).

Any thoughts?

Regards
Mike

Yes, in JGo 5.0 and earlier it was necessary to run a window server, even if your server was headless. This is because JGo needs access to the display in order to accurately measure text. JGo attempts to access the display in JGoGlobal.setup() during initialization. You could either use X11, or if that’s not an option, use Xvfb as a virtual X Server.
Or better yet, just upgrade to JGo 5.1. JGo now uses a BufferedImage to get a Graphics2D object with which to measure text.