我正在基于Java 11的Maven(3.6.0)项目使用以下结构(在命令行上可以正常工作!):
src/main/java/
module-info.java
/de/test/tp/TP.java
src/test/java/
/de/test/tp/test/TPTests.java
module-info.java如下所示:
module de.test.tp
{
exports de.test.tp;
requires org.apache.logging.log4j;
}
TP.java:
package de.test.tp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TP
{
private static final Logger LOGGER = LogManager.getLogger(TP.class);
public TP()
{
super();
LOGGER.info("test");
}
}
TPTests.java:
package de.test.tp.test;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Test;
import de.test.tp.TP;
public class TPTests
{
private static final Logger LOGGER = LogManager.getLogger(TP.class);
public TPTests()
{
super();
}
@Test
public void defaultConstructor()
{
final TP tp = new TP();
assertNotNull(tp, "Default constructor failed!");
}
}
最后但并非最不重要的是pom.xml的重要部分
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<fork>true</fork>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<optimize>false</optimize>
<debug>true</debug>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
</dependencies>
现在,当我说(从Eclipse中)“ maven / update project”时,eclipse将所有maven依赖项放到了
classpath 。重新编译后,eclipse告诉我:
The package org.apache.logging.log4j is accessible from more than one module: <unnamed>, org.apache.logging.log4j
对于两种org.apache.logging.log4j
进口。
所以问题是,如何解决?
更新1
我真正想要的是一个基于Maven的Java模块项目的清晰项目结构,该项目可在Eclipse中工作并支持白盒和黑盒测试。有人可以给我这样的项目框架吗?
更新2
还是我在某些文章中阅读到的Eclipse没有多模块支持的问题?-这还将使我回到更新1的问题。
更新3
缩短了整个问题,并添加了完整(缩短)的文件内容。
注1
例如,在我所有的测试中,有一秒钟下的module-info.java,test/java/
我发现eclipse
2019-03非常不稳定并且有错误!例如-有时尝试删除被测模块-info.java-
Eclipse无法删除它。另一个效果是,当使用测试路径eclipse编辑module-info.java时,还编辑了主路径下的module-
info.java。这意味着在主模块info.java中,我发现该替代已更改为de.test.tp.test-
当我修复该问题(在Eclipse编辑器中)时,无法保存该文件。当我在外部编辑器中修复该问题并刷新/清理该项目时,eclipse仍然告诉我de.test.tp.test将不存在-
因此我必须从“标记”选项卡中手动删除错误。
所以从我的角度来看,Eclipse 2019-03在处理Java模块方面存在一些错误。
笔记2
从下面的注释中可以看到,@
howIger将其报告为Eclipse中的错误。
注3
在我看来,它现在已在Eclipse 2019-06中修复:)
该错误表明存在 一个以上 包含该软件包的org.apache.logging.log4j
模块
(可能是一个JAR)(或更精确地说,可以从中访问该软件包)。 Java平台模块系统 (JPMS) 不允许
这样做。但是在这种情况下,只有一个JAR包含该软件包,因此 在Eclipse 2019-03(4.11)中会错误地显示 此 错误 。看到:
Eclipse错误546315
-Java编辑器中错误显示“从多个模块可以访问包[…]:,[…]”错误
作为 此错误的 解决方法 ,请执行以下任一操作:
module-info.java
添加的行中requires org.apache.logging.log4j.core;
,将所有相关的JAR拉到modulepath上默认情况下,所有Maven依赖项都位于类路径上。在module-info.java
该行中,requires org.apache.logging.log4j;
将带有org.apache.logging.log4j
模块的JAR
拉到modulepath上。该错误错误地指出,在类路径上(因此在 未命名 模块中)还有另一个JAR 也包含package
org.apache.logging.log4j
。请注意,modules- info.test
(带有文件扩展名.test
)既不是Java也不是Maven,因此对于Eclipse仅是文本文件。
多模块支持 :在您的情况下,您只有一个module-info.java
,这意味着您只有一个Java模块。在Eclipse中
,每个Java模块都需要一个Java项目 (因为每个模块都有其自己的依赖性)。
问题内容: 同事一直在吹捧Maven的奇迹及其神奇的依赖关系,但是我发现它在我认为是显而易见的用途上失败了。 假设我有一个带有主POM的根文件夹。 然后在我下面有一些项目,分别称为A和B B需要A,因此B文件夹中的POM中具有适当的依赖项 现在,回到根文件夹中的配置文件中,我指定要构建B。 当我执行通常的mvn全新安装时,由于未构建A而失败。 我的朋友告诉我,我必须在根目录的主配置文件中同时指定A
QQ群里反馈有这些问题及解决方法 Maven下报配置文件未能找到 -- 提前添加log4j的配置文件到resources文件夹 MyEclipse下修改UTF-8编码无效 -- 在配置里面修改workspace的编码,及tomcat的JVM启动参数(加入-Dfile.encoding=utf-8) Maven项目 在nutz-book-project的源码中, 有pom.xml 推荐的maven
问题内容: 我有一个父项目多模块Maven项目P和三个子模块,和。这两个和是战项目,都依赖于A。 我可以输入在和拥有所有的子模块正确的编译的。当我要对特定模块进行操作时,问题就来了。 我希望能够为项目打包战争,但是当我从的目录运行命令时,它抱怨找不到的依赖项。 我从这个问题中了解到:Maven和相关模块,也许Maven并不是真正为这种类型的依赖关系解决而设计的,但这引出了我该如何打包的问题? 当我
我有一些年的maven项目的经验,即使是多模块项目(这让我讨厌maven的多模块特性(所以免责声明现在已经完成了)),即使我真的喜欢maven,我也无法得到一个明确的答案: 多模块maven项目的典型用途是什么?与简单的依赖关系和父pom相比,这样的结构有什么附加值? 我已经看到了很多多模块项目的配置,但是所有这些都可以通过创建一个简单的依赖库结构来解决,这些依赖库作为交付品(即使有一个父pom,
本文向大家介绍关于python导入模块import与常见的模块详解,包括了关于python导入模块import与常见的模块详解的使用技巧和注意事项,需要的朋友参考一下 0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的module模块中。就这样的话,p
本文向大家介绍关于Pytorch的MLP模块实现方式,包括了关于Pytorch的MLP模块实现方式的使用技巧和注意事项,需要的朋友参考一下 MLP分类效果一般好于线性分类器,即将特征输入MLP中再经过softmax来进行分类。 具体实现为将原先线性分类模块: 替换为: 并且添加MLP模块: 看一下模块结构: 以上这篇关于Pytorch的MLP模块实现方式就是小编分享给大家的全部内容了,希望能给大家