有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAlang.LinkageError:未能链接freemarker/core/TemplateElement

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

java.lang.LinkageError: Failed to link freemarker/core/TemplateElement Caused by: java.lang.NoClassDefFoundError: javax/swing/tree/TreeNode

我在我的jboss模块中添加了freemarker jar,它就是一个模块。xml如下所示:

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

<dependencies>
</dependencies>
</module>

共 (1) 个答案

  1. # 1 楼答案

    谷歌应用引擎也有同样的问题,一些在JavaSE中是必需的类不存在。所以试着用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中的其他模块,那么肯定有一个更优雅的解决方案,比如向deployment-structure.xml添加一些东西,或者如果您定义了自己的JBoss模块,然后将其添加到module.xml。也许你应该检查哪个标准模块导出swing包(“javax.api”?),并尝试将该模块声明为依赖项