Eclipse Java 11:为什么;无法解决导入xxx问题”;即使模块信息通知它是必需的
我从Java9开始就阅读了模块化。我知道我必须创建一个模块info和info,以确定哪个包是公开的和必需的。我可以看到我的类路径上确实有Java11。但我得到了这个主题中提到的错误。更准确地说,在构建时,我得到了这个错误日志Eclipse Java 11:为什么;无法解决导入xxx问题”;即使模块信息通知它是必需的,eclipse,java-9,java-11,Eclipse,Java 9,Java 11,我从Java9开始就阅读了模块化。我知道我必须创建一个模块info和info,以确定哪个包是公开的和必需的。我可以看到我的类路径上确实有Java11。但我得到了这个主题中提到的错误。更准确地说,在构建时,我得到了这个错误日志 INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ zuul --- [WARNING] Can't extract module name from xpp3_min-1.1.4c.jar:
INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ zuul ---
[WARNING] Can't extract module name from xpp3_min-1.1.4c.jar: Provider class org.xmlpull.mxp1.MXParser,org.xmlpull.mxp1_serializer.MXSerializer not in module
[WARNING] ********************************************************************************************************************
[WARNING] * Required filename-based automodules detected. Please don't publish this project to a public artifact repository! *
[WARNING] ********************************************************************************************************************
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to C:\_d\WSs\soteste\zuul\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/_d/WSs/soteste/zuul/src/main/java/module-info.java:[24,18] module not found: common
[INFO] 1 error
我缺少一些额外的设置,以便使公共项目中的类对其他项目可见
PS1:我遵循并设置了替代JRE。
PS2:我不认为这与Eclipse有关。顺便说一句,我正在使用这个版本:
面向企业Java开发人员的Eclipse IDE。
版本:2018-12(4.10.0)
构建id:20181214-0600
操作系统:Windows 10、v.10.0、x86_64/win32
Java版本:11.0.2
在我的zuul项目中:
import com.test.common.security.JwtConfig;
@EnableWebSecurity
public class SecurityTokenConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtConfig jwtConfig;
module-info.java
module zuul {
...
requires common;
}
module common {
exports com.test.common.security;
exports com.test.common;
...
}
在我的共同项目中
@Getter
@ToString
public class JwtConfig {
module-info.java
module zuul {
...
requires common;
}
module common {
exports com.test.common.security;
exports com.test.common;
...
}
我发现了问题。对其他更有Java9+经验的人来说,这可能看起来很愚蠢,但对我来说,我花了一段时间才找到根本原因。希望它能对未来的读者有用 问题:公共项目位于类路径而不是模块路径中 解决方案是:当我移交时,只需按照Eclipse的建议移动到模块路径;当我移交import com.test.common.security.JwtConfig时,在module-info.java中;在SecurityTokenConfig.java上,所提出的解决方案与我移交module-info.java时的解决方案完全不同(也许对Eclipse团队的一个适度建议是从现在开始重新查看它,但它超出了这个问题的目的) 归功于 ***编辑 虽然我仍然把上述解决方案看作是对我的问题的答案,但我必须承认,在解决了这个问题之后,我偶然发现了一个新的问题,我意识到,至少对于我来说,即使使用java 11,我也必须避免模块化(JigScW)。未来的读者可能也会对这篇文章感兴趣