首页 > 解决方案 > 无法在 winrun4j ini 文件中识别 vmargs

问题描述

我刚刚将我的应用程序从 Java8 移动到 Java10,作为其中的一部分,我现在需要添加

--add-modules java.xml.bind

避免java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

例外。

这在我的批处理文件中工作正常

JVM64\bin\java --add-modules java.xml.bind -cp lib;lang  -Xms150m -Xmx400m  -jar lib/SongKong-5.7.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

但我无法让我的等效 winrun4j .ini 文件工作

我试过添加

vmarg.1=--add-modules java.xml.bind

然后尝试

vmarg.1=--add-modules
vmarg.2=java.xml.bind

但两者都没有任何效果,从 winrun4j 运行时我仍然得到 NoClassDefFoundError

标签: javawinrun4j

解决方案


我无法让它工作,但我确实找到了解决我的问题的方法。通过使用我的应用程序部署 jaxb jar,就像使用任何 3rd 方库一样,我不再需要使用 -add 模块。

由于我正在使用 maven 构建我的应用程序,因此我必须将以下内容添加到我的 pom.xml 文件的依赖项部分。

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>

推荐阅读