首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javac返回“错误:模块未找到: ini4j”

javac返回“错误:模块未找到: ini4j”
EN

Stack Overflow用户
提问于 2019-06-27 19:43:05
回答 2查看 1.2K关注 0票数 3

我有一个小程序(目前有6个*.java文件,加上ini4j-0.5.4.jar库)。它在Eclipse中运行得很好,但是我需要在一个没有图形功能的系统上编译和运行它,所以我为它构建了一个javac命令,以便从项目目录中运行:

代码语言:javascript
复制
javac -d bin -classpath libs/ini4j-0.5.4.jar src/main/*.java

当它运行时,它会产生两行:

代码语言:javascript
复制
error: module not found: ini4j
1 error

我已经离开Java编程多年了,我只是在追赶模块等方面的变化。这似乎是问题的根源:ini4j文件是在模块出现之前编写的。我已经看到了一些提示,即有一种方法可以使模块化的Java程序与非模块化组件一起工作,显然,当我从Eclipse运行它时,它也能工作,但我无法用它来诱使javac编译器接受它。

我在Ubuntu19.04下使用openjdk (和javac) 11.0.3,如果这有帮助的话。

javac的底线:如何将这个非模块化的JAR文件编译成一个新的(模块化的,简单的)命令行编译器的程序?

解决方案:在注释和答案的帮助下,我找到了解决问题的方法,方法是将javac命令行修改为:

代码语言:javascript
复制
javac -g -d bin --module-path libs/ini4j-0.5.4.jar src/main/*.java

现在它并没有给我编译时带来任何问题。

谢谢大家的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-27 22:10:54

答案在注释部分- Error: automatic module cannot be used with jlink: - Maven with JavaFX中给出。

jlink的不幸之处在于,它只能在所有东西都是显式模块(即有module-info文件)的情况下才能创建图像。至少有一个依赖项(ini4j)不是显式模块;请参见What is an automatic module?了解更多信息。你至少有几个选择: (1)将依赖项修改/叉为显式模块, (2)回到类路径,将应用程序打包到一个"fat“罐子中。 (3)尝试jpackage (早期访问,我怀疑javafx plugin提供的支持)。

就个人而言,我建议使用选项2,使用任何适当的maven/gradle插件将应用程序打包为可执行的JAR。它将更容易处理应用程序和它的依赖性现在和以后。

票数 2
EN

Stack Overflow用户

发布于 2020-04-03 20:42:24

对于任何需要它的人,我已经将ini4j移植到作为模块使用。

可以在这里找到:https://github.com/codebbgr/cbbini4j

同时也修复了一些错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56797669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档