2012-04-26 1 views
3

Мы мигрируют в JBoss AS7 от старой версии JBoss, и мы используем JFreeChart в одной части нашего приложения:JBoss AS7 приложение развертывается на Mac не может найти com.apple.laf.AquaLookAndFeel

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

Когда мы нажмем эту строку, мы получим трассировку стека ниже, указывающую, что com.apple.laf.AquaLookAndFeel не найден. Мы видим эту проблему только на Mac, что имеет смысл с учетом имени пакета com.apple.laf. Работа на сервере Linux, похоже, работает нормально. Есть ли что-то, что нам нужно сделать, чтобы заставить AS7 на Mac распознавать классы Apple?

Все маки, которые я пробовал, полностью обновлены с 4/26/12. Я не смог найти тот, у которого есть некоторые из старых 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

Вы проверили, что данный класс существует в войне? по стеку исключений он не смог найти этот класс из deploy.blah_war. – kosa

+0

@thinksteep, я вижу его в /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar/com/apple/laf –

+0

Является ли JAVA_HOME указаным на правильный путь? Я бы предложил сообщение в форуме сообщества jboss. – kosa

ответ

8

Я не уверен, как проверить, где именно добавить это, но вам нужно добавить com.apple.laf,com.apple.laf.resources в качестве зависимостей. В интерфейсе CLI, который поставляется с AS 7, он определен в JAVA_OPTS с -Djboss.modules.system.pkgs=com.apple.laf,com.apple.laf.resources. Можно добавить, что к вашему standalone.conf или domain.conf в зависимости от режима, который вы работаете в.

Вы также можете просто попробовать добавить Dependencies: com.apple.laf,com.apple.laf.resources к вашему MANIFEST.MF в развертывании тоже. Я не уверен, что это сработает, но, вероятно, стоит проверить.

+1

Я добавил следующее к нашему standalone.conf, и он работает: 'if [" '' 'uname''" = "Darwin"]; затем JBOSS_MODULES_SYSTEM_PKGS = "$ JBOSS_MODULES_SYSTEM_PKGS, com.apple.laf, com.apple.laf.resources" fi' –

+0

Отлично, спасибо, что сообщили мне. Я думаю, что имеет смысл иметь его там. –

+0

Работает с wildfly 9.0.0 final также. – viktor