5

以前のバージョンの JBoss から JBoss AS7 に移行しており、アプリの一部で JFreeChart を使用しています。

chart = ChartFactory.createStackedBarChart( "", "", "Data", dataset,
            PlotOrientation.HORIZONTAL, true, false, false );

この行に到達すると、com.apple.laf.AquaLookAndFeel が見つからないことを示す以下のスタック トレースが取得されます。この問題は、com.apple.laf パッケージ名を考えると理にかなっている Mac でのみ見られます。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[source=com.sun.faces.lifecycle.LifecycleImpl@3dc264b1]
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

これはハックのように思えるので、もっと良い方法があれば、それを試してみたいと思います。

4

2 に答える 2

10

これを追加する場所を正確にテストする方法はよくわかりませんがcom.apple.laf,com.apple.laf.resources、依存関係として追加する必要があります。AS 7 に同梱されている CLI GUI では、JAVA_OPTSwith で定義されてい-Djboss.modules.system.pkgs=com.apple.laf,com.apple.laf.resourcesます。実行しているモードに応じて、それをstandalone.conforに追加できます。domain.conf

また、展開に追加Dependencies: com.apple.laf,com.apple.laf.resourcesすることもできます。MANIFEST.MFそれが機能するかどうかはわかりませんが、おそらくテストする価値があります。

于 2012-04-27T16:36:54.077 に答える