我有一个用Java8写的项目,我想把它更新到Java9。所以我把这些类分成了两个独立的模块。模块:
org.ggp.base
和org.ggp.base/src/main/java
目录中的模块-info.java
。在我开始更新到Java9之前,它的构建是用Gradle自动化的。该模块使用pl.edu.prz.klopusz
模块中包含的抽象类实现。pl.edu.prz.klopusz/dolar-app/src/main/java
中的
pl.edu.prz.klopusz
。我想使用Maven自动构建它。模块需要org.ggp.base
模块。文件树类似于:
.
├── org.ggp.base/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ ├── external/
│ │ │ └── JSON/
│ │ │ ├── JSONArray.java
│ │ │ └── JSONObject.java
│ │ ├── META-INF/
│ │ │ └── MANIFEST.MF
│ │ ├── module-info.java
│ │ └── org/
│ │ └── ggp/
│ │ └── base/
│ │ └── util/
│ │ ├── statemachine/
│ │ │ ├── MachineState.java
│ │ │ └── StateMachine.java
│ │ └── symbol/
│ └── resources/
│ └── org/
│ └── ggp/
│ └── base/
└── pl.edu.prz.klopusz/
└── dolar-app/
└── src/
└── main/
└── java/
├── module-info.java
└── pl/
└── edu/
└── prz/
└── klopusz/
└── utilities/
└── decorators
└──StateMachineDecorator.java
module org.ggp.base {
requires guava;
requires reflections;
requires jdk.httpserver;
uses org.ggp.base.util.statemachine.StateMachine;
exports org.ggp.base;
}
module pl.edu.prz.klopusz {
requires org.ggp.base;
provides org.ggp.base.util.statemachine.StateMachine
with pl.edu.prz.klopusz.utilities.decorators.StateMachineDecorator;
}
javac -d out \
--module-source-path org.ggp.base/src/main/java:pl.edu.prz.klopusz/dolar-app/src/main/java \
$(find org.ggp.base/src/main/java -name *.java) \
$(find pl.edu.prz.klopusz/dolar-app/src/main/java -name *.java)
error: module not found on module source path
error: not in a module on the module source path
或
base/src/main/java/org/ggp/base/validator/opnfvalidator.java:1:
error: not in a module on the module source path
我想去掉错误,编译这个项目。我不必保留目录结构,但是当我用2个module-info.java
文件将其放在一起时,编译器会抱怨有多个模块。我可以通过IntelliJ的想法来完成,我不介意,我试过了。但是我不知道幕后发生了什么,也不知道如何处理错误(包为空:org.ggp.base
)。
--module-source-path Users/Me/MyProject/src
--module-source-path /Users/Me/MyProject/src:/Users/Me/MyOtherProject/src
[parsing started SimpleFileObject[/home/sensitive/org.ggp.base/src/main/java/module-info.java]]
[parsing started SimpleFileObject[/home/sensitive/org.ggp.base/src/main/java/org/ggp/base/util/statemachine/MachineState.java]]
[parsing started SimpleFileObject[/home/sensitive/pl.edu.prz.klopusz/dolar-app/src/main/java/module-info.java]]
[parsing started SimpleFileObject[/home/sensitive/pl.edu.prz.klopusz/dolar-app/src/main/java/pl/edu/prz/klopusz/utilities/decorators/StateMachineDecorator.java]]
org.ggp.base/src/main/java/org/ggp/base/util/statemachine/MachineState.java:1: error: not in a module on the module source path
package org.ggp.base.util.statemachine;
^
[loading /modules/jdk.httpserver/module-info.class]
[loading /modules/java.base/module-info.class]
[total 263ms]
100 errors
package org.ggp.base.util.statemachine;
import org.ggp.base.util.gdl.grammar.GdlSentence;
import java.util.HashSet;
import java.util.Set;
public class MachineState {
//...
}
根据JEP261,--module-source-path
选项(用于在“多模块模式”中编译)必须指向一个目录,该目录为每个包含的模块保留一个子目录,其中的目录名必须等于模块名。
为了适应源不直接包含在模块目录中的布局,该选项支持这样的模式,即标记*
可用于表示路径的任何部分中的模块名称,例如“./*/src/main/java/”
中,该模式将在./my.mod1/src/main/java/module-info.java
中找到模块my.mod1
等。
JEP261没有提到*
在模式中的位置可能发生的任何对比,但显然Javac
不喜欢以*
开头的模式。这可能是故意的,也可能不是故意的。
问题内容: 我有一个模块foo,包含util.py和bar.py。 我想将其导入IDLE或python会话中。我该怎么办? 我找不到关于如何在当前目录或默认python PATH中导入模块的文档。经过尝试后, 我能得到的最接近的是 这给了我在Windows 7上拒绝的权限。 问题答案: 一种方法是简单地修改路径: 请注意,这要求foo为python包,即包含一个文件。如果您不想修改,也可以修改环境
问题内容: 我意识到,当我对node.js模块(带有-g标志)进行全局安装时,除非编写了整个路径,否则无法使用该模块。 我的意思是,如果模块已全局安装,则无法使用: 我必须写: 我如何对节点说必须在正确的路径中寻找模块? 谢谢。 问题答案: 总的来说,我建议让npm为您提供路径并按照上面的说明进行设置:
我正面临一个烦人的问题。下面是历史: 我们使用的是(测试环境)并且部署工作正常 我做了一个部署,但没有奏效。我们的解决方案至少需要V12.1.2,因此我卸载了12.1.1并安装了 在安装新版本之前,我完全删除了文件夹,并从头创建了 我在静默模式下安装了WebLogic12.1.3,并创建了我的测试域。域中只有管理服务器和一个独立的托管服务器(没有群集,没有大量托管服务器) 我进行了部署,但Webl
主要内容:模块系统特征,创建模块Java 9是一种称为模块的新型编程组件。模块是一个自我描述的代码和数据集合,并有一个名称来标识它。 模块系统特征 使用模块组件,Java 9中增加了以下增强功能 - 引入了一个新的可选阶段,即链接时间。这个阶段介于编译时间和运行时间之间。 在此阶段,可以组合和优化一组模块,使用jlink工具制作自定义运行时映像。 javac,jlink和java有额外的选项来指定模块路径,它们进一步定位模块的定
食氧;视窗7;JDK 9决赛从9日开始,21日结束;JUnit4.12和现有的应用程序。作为起点,可以编译、执行应用程序,并且所有JUnit测试都显示为绿色。现在我们使用eclipse生成文件模块信息。JAVA结果是: 但有一个错误:junit无法解析为模块。问题是:如何告诉文件junit没有定义任何模块,应该在兼容模式下运行?
我正在Linux Mint 16上使用python 2.7。我面临一个错误,如果我从程序启动器运行IDE(在Spyder和Pycharm上尝试过)(例如,从Alt F2的提示符或桌面上的图标快捷方式),模块不会加载,我会得到以下错误 但是,如果我从命令行运行程序,模块加载正确,程序运行正常。我只有一个安装每个IDE。这两个实例的sys.path输出如下: Pycharm从快捷方式运行的sys.pa