与Java相比,Eclipse Java 11类路径不起作用

问题描述 投票:4回答:1

将旧的ERP系统迁移到JPMS后证明是非常有问题的(Java 11 Eclipse finds automatic module, Maven does not),所以我决定首先尝试简单地用Java 11替换Java 8,但是通过不引入任何module-info.java文件来保留类路径上的所有内容。这实际上非常顺利; Maven正在编译它没有问题,结果应用程序也从命令行开始。

但是,当我将该Maven项目导入Eclipse 2019-03时,它抱怨了a.o. java.xml包,例如这个导入:

import javax.xml.namespace.QName;

这是有道理的,因为JRE是模块化的,并且这些类在java.xml模块中,我不包括在内。但是为什么Maven然后正确编译并且应用程序从J11开始?

我怀疑我需要告诉Eclipse“--add-modules = ALL-SYSTEM”这个项目,但我不知道在哪里或如何。我已经尝试将构建路径/库中的所有JDK / JRE模块从隐式移动到显式,但这没有用。

eclipse java-11 jigsaw
1个回答
2
投票

您可能在类路径上有一些冗余的xml api jar,并且javac(错误地)不会因为JDK-8215739而抱怨,但Eclipse已经(正确)在bug 536928之后做了

在运行时,JVM似乎忽略已经出现在命名模块中的类路径上的包,因此javac的行为实际上与此一致。

要解决您的问题:尝试“打开类型”在类路径的jar中查找javax.xml.namespace.QName的任何副本,并在pom.xml中排除这些依赖项

© www.soinside.com 2019 - 2024. All rights reserved.