我有一个足够简单的程序:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
public class Main {
public static void main(String[] args) throws JAXBException {
JAXBContext context0 = JAXBContext.newInstance(String.class);
}
}
因为我想使用java-11,所以不再提供javax.xml.bind,所以我需要自己添加它。 我不想使用 Maven,但添加外部 jar。 正如所建议的https://stackoverflow.com/a/43574427/3014199 我首先将
jakarta.xml.bind-api-2.3.2.jar
添加到模块路径,然后将其依赖项 https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api/2.3.2 jakarta.activation-api-1.2.1.jar
添加到模块路径中并标记两者用于出口:现在我明白了
Error: Unable to initialize main class Main
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
所以我将上面建议的其他库 jaxb-runtime-2.3.2.jar 添加到类路径中:
错误没有改变,所以我添加了所有编译依赖项https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime/2.3.2:
到类路径:
可以肯定的是,我再次检查了“订购和导出”下的所有罐子,但错误仍然存在。
我还尝试将所有 jar 添加到模块路径并将所有 jar 添加到类路径但无济于事。
将所有 jar 移动到类路径后,我得到了 com.sun.xml.internal 的 classNotFoundException... 在 https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl/2.3.1 添加 jar 后,一切正常。
在 IntelliJ 上,我进入模块设置,然后添加库,然后 Maven,然后输入
javax.xml.ws
并添加它,瞧,修复了。