Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.LinkageError:未能链接freemarker/core/TemplateElement_Java_Freemarker_Jboss Eap 6 - Fatal编程技术网

java.lang.LinkageError:未能链接freemarker/core/TemplateElement

java.lang.LinkageError:未能链接freemarker/core/TemplateElement,java,freemarker,jboss-eap-6,Java,Freemarker,Jboss Eap 6,我的问题是,我有一个ejb,它在内部使用freemarker工具生成HTML页面,构建并部署到JBoss EAP 6.4.10。当我尝试访问此功能(使用freemarker工具生成HTML代码)时,jboss抛出以下错误: java.lang.LinkageError:未能链接freemarker/core/TemplateElement 原因:java.lang.NoClassDefFoundError:javax/swing/tree/TreeNode 我在jboss模块中添加了freema

我的问题是,我有一个ejb,它在内部使用freemarker工具生成HTML页面,构建并部署到JBoss EAP 6.4.10。当我尝试访问此功能(使用freemarker工具生成HTML代码)时,jboss抛出以下错误:

java.lang.LinkageError:未能链接freemarker/core/TemplateElement 原因:java.lang.NoClassDefFoundError:javax/swing/tree/TreeNode

我在jboss模块中添加了freemarker jar,其module.xml如下所示:

<module xmlns="urn:jboss:module:1.1" name="org.freemarker">
<resources>
    <resource-root path="freemarker-2.3.25.jar"/>
</resources>

<dependencies>
</dependencies>
</module>

谷歌应用程序引擎也有同样的问题,一些Java SE中必须的类不存在。因此,尝试使用
org.freemarker:freemarker-gae
而不是普通的
org.freemarker:freemarker

那到底是什么样的平台,为什么缺少那个类?是谷歌应用引擎吗


更新:当然JBoss EAP的类加载器不会出于某种原因导出
javax.swing
包(参见注释)。虽然使用freemarker gae可以解决这一问题,但是您必须小心地将来自其他地方的非gae freemarker-s作为可传递的Maven(或Gradle等)依赖项排除在外。因此,修复JBoss模块配置将更易于维护。我看到一些人用
-Djboss.modules.system.pkgs=javax.swing
启动JBoss EAP,但如果swing可用于同一JVM中的其他模块,那么肯定有一个更优雅的解决方案,例如向
部署结构.xml
添加一些内容,或者如果您定义了自己的JBoss模块,然后将其添加到
模块.xml
。也许您应该检查哪个标准模块导出swing包(“javax.api”),并尝试将该模块声明为依赖项。

最后发现错误是由于freemaker的module.xml文件中缺少依赖项“javax.api”,在将此依赖项添加到module.xml中后,问题已经解决

<module xmlns="urn:jboss:module:1.1" name="org.freemarker">
<resources>
    <resource-root path="freemarker-2.3.25.jar"/>
</resources>

<dependencies>
    <module name="javax.api"/>
</dependencies>


它不是Google App Engine,它运行在JBoss-EAP-6上,缺少的类是javax.swing.tree.TreeNode。上次我使用JBoss EAP时,它运行在标准Java上。那里有什么不同?是否只是JBoss发挥了类加载器的魔力,故意隐藏了
javax.swing
(您完全可以配置的东西)?无论如何,我的答案仍然适用
freemarker gae
不依赖于
javax.swing.tree.TreeNode
。我还有其他模块使用javax.swing并在JBoss上运行,没有任何错误。也许你是对的,它的JBoss模块加载器的魔力和主要是配置问题(但尚未解决的谜团)。无论如何,正如您所说,使用
freemarker-gae
解决了这个问题。非常感谢您的帮助@ddekanyI建议您了解JBoss模块的配置。请参阅更新。