2012-04-26 49 views
3

我們從舊版本的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 

這似乎喜歡更多的黑客,所以如果有更好的方法,我們想嘗試一下。

+0

您是否檢查過戰爭中存在的特定類別?根據異常堆棧,它無法從deployment.blah_war中找到該類。 – kosa 2012-04-26 21:17:36

+0

@thinksteep,我在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar/com/apple/laf – 2012-04-26 21:20:14

+0

看到它是JAVA_HOME指向正確的路徑嗎?我會建議在jboss社區論壇發帖。 – kosa 2012-04-26 21:21:33

回答

8

我不太確定如何測試究竟在哪裏添加此項,但是您需要添加com.apple.laf,com.apple.laf.resources作爲依賴關係。在隨AS 7提供的CLI GUI中,它在JAVA_OPTS中定義爲-Djboss.modules.system.pkgs=com.apple.laf,com.apple.laf.resources。你可以根據你在運行的模式添加到您的standalone.confdomain.conf

你也可能只是嘗試加入Dependencies: com.apple.laf,com.apple.laf.resourcesMANIFEST.MF在部署過。我不確定這是否可行,但這可能值得一試。

+1

我在standalone.conf中添加了以下內容,它的工作原理如下: 'if [「''uname''」=「Darwin」];然後 JBOSS_MODULES_SYSTEM_PKGS =「$ JBOSS_MODULES_SYSTEM_PKGS,com.apple.laf,com.apple.laf.resources」 fi' – 2012-05-03 21:39:22

+0

非常感謝,讓我知道。我認爲這是有道理的。 – 2012-05-03 21:49:13

+0

也可以和wildfly 9.0.0一起使用。 – viktor 2015-08-17 13:07:05

相關問題