我们从旧版本的JBoss迁移到JBoss AS7,我们在我们的应用程序的一部分使用的JFreeChart:部署在Mac上的JBoss AS7应用程序无法找到com.apple.laf.AquaLookAndFeel
chart = ChartFactory.createStackedBarChart("", "", "Data", dataset,
PlotOrientation.HORIZONTAL, true, false, false);
当我们碰到这一行时,我们得到下面的堆栈跟踪,指出无法找到com.apple.laf.AquaLookAndFeel。我们只在Mac上看到这个问题,因为com.apple.laf包的名称是有道理的。在Linux服务器上运行似乎工作正常。我们需要做些什么来让Mac上的AS7识别Apple的外观和感觉类?
我试过的所有Mac电脑在2012年4月26日全面更新。我一直无法找到具有某些较旧JVM的设备。
堆栈跟踪:
15:38:30,125 SEVERE [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--0.0.0.0-8080-1) JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /blah/blah/blah/blahInfo.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[[email protected]]
15:38:30,129 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/mgmt].[Faces Servlet]] (http--0.0.0.0-8080-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.ClassNotFoundException: com.apple.laf.AquaLookAndFeel from [Module "deployment.blah_war-1001.0-SNAPSHOT.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
at java.lang.Class.forName0(Native Method) [classes.jar:1.6.0_31]
at java.lang.Class.forName(Class.java:247) [classes.jar:1.6.0_31]
at javax.swing.SwingUtilities.loadSystemClass(SwingUtilities.java:1856) [classes.jar:1.6.0_31]
at javax.swing.UIManager.setLookAndFeel(UIManager.java:563) [classes.jar:1.6.0_31]
at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1329) [classes.jar:1.6.0_31]
at javax.swing.UIManager.initialize(UIManager.java:1422) [classes.jar:1.6.0_31]
at javax.swing.UIManager.maybeInitialize(UIManager.java:1410) [classes.jar:1.6.0_31]
at javax.swing.UIManager.getDefaults(UIManager.java:645) [classes.jar:1.6.0_31]
at javax.swing.UIManager.getColor(UIManager.java:687) [classes.jar:1.6.0_31]
at org.jfree.chart.JFreeChart.<clinit>(JFreeChart.java:261) [jfreechart-1.0.13.jar:]
at org.jfree.chart.ChartFactory.createStackedBarChart(ChartFactory.java:950) [jfreechart-1.0.13.jar:]
at this.is.our.code.DisplayChart.buildChart(DisplayChart.java:73) [classes:]
现在,我们已经能够通过指定默认外观来解决这个问题,觉得作为一个系统属性启动JBoss的时候:
-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel
这似乎喜欢更多的黑客,所以如果有更好的方法,我们想尝试一下。
您是否检查过战争中存在的特定类别?根据异常堆栈,它无法从deployment.blah_war中找到该类。 – kosa 2012-04-26 21:17:36
@thinksteep,我在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar/com/apple/laf – 2012-04-26 21:20:14
看到它是JAVA_HOME指向正确的路径吗?我会建议在jboss社区论坛发帖。 – kosa 2012-04-26 21:21:33