gpt4 book ai didi

eclipse - M2Eclipse 和工作区项目

转载 作者:行者123 更新时间:2023-12-03 20:27:22 25 4
gpt4 key购买 nike

在 Eclipse Helios 中,m2eclipse 插件在任何运行配置中都不包含我本地工作区中的项目。

我已经设置了这个测试场景:

ProjectA
+ src/main/java/a/TestInA.java
+ pom.xml

ProjectB
+ src/main/java/b/TestInB.java ("main()" calls "a.TestInA.main()")
+ pom.xml (includes reference to ProjectA)

两个项目都设置了标志“从工作区项目解决依赖关系”。这在编译时工作得很好,即编译器在“b.TestInB”中找到对“a.TestInA”的引用,并且“Maven dependencies”列表包含对“ProjectA”的引用。但是当我尝试实际运行“b.TestInB”时,我得到了一个 NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: a/TestInA
at b.TestInB.main(TestInB.java:13)
Caused by: java.lang.ClassNotFoundException: a.TestInA
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 1 more

实际上,系统属性“java.class.path”不包括 ProjectA 的“target/classes”文件夹(或与此相关的任何其他文件夹)。

这些是我安装的版本:

  • Eclipse:Helios 服务版本 2(构建 ID:20110301-1815)
  • m2eclipse:0.12.1(内部版本号:20110112-1712)

最佳答案

我终于在我的配置中找到了错误。它与工作区依赖项中的“archiverClassifier”有关。我的 POM 设置为根据运行的编译器生成不同名称的 Artifact 。

这是使用“jdk1.5”和“jdk1.6”的配置文件完成的,设置“archiverClassifier”变量:

<profiles>
<profile>
<id>jdk1.5</id>
<activation>
<jdk>1.5</jdk>
</activation>
<properties>
<compilerTarget>1.5</compilerTarget>
<archiverClassifier>jdk1.5</archiverClassifier>
</properties>
</profile>
<profile>
<id>jdk1.6</id>
<activation>
<jdk>1.6</jdk>
</activation>
<properties>
<compilerTarget>1.6</compilerTarget>
<archiverClassifier>jdk1.6</archiverClassifier>
</properties>
</profile>
</profiles>

然后,在依赖项中,我使用“分类器”子项引用正确的分类器,为其提供先前在相应配置文件中设置的“archiverClassifier”变量:

<dependencies>
<dependency>
<groupId>com.brain2</groupId>
<artifactId>ProjectA</artifactId>
<version>1.0.0-SNAPSHOT</version>
<classifier>${archiverClassifier}</classifier>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>

如果我删除“分类器”子项,m2eclipse 的工作区依赖性解析就像一个魅力。

一旦我弄明白了这一点,在 Google 上快速搜索“m2eclipse workspace resolution classifiers”,我就在 Sonatype 的 JIRA 页面上找到了错误 MNGECLIPSE-680 .所以我想这是一个错误,我只是回答了我自己的问题:)

(附带说明,单元测试不会出现此问题,其中依赖项的“test-classes”目录已正确添加到类路径中。)

关于eclipse - M2Eclipse 和工作区项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com