【发布时间】:2012-10-12 13:08:10
【问题描述】:
我在 OSX (Java 1.6) 上的 eclipse 中的标准 java 项目中编写了一个类。该类使用来自另一个库的类和接口。
我选择类,然后执行 Run As > Java Application,一切正常。
之后,我尝试将我的项目作为 Maven 项目运行,但事情开始变得有点令人沮丧。我在这里总结了所有步骤,希望有人能告诉我我做错了什么: - 从标准 java 项目中,我右键单击并配置 > 转换为 Maven 项目,然后单击芬兰语。到目前为止一切顺利。
然后构建路径>配置构建路径>并添加包含我的项目的文件夹。还是不错的
然后我删除了所有 @Override 注释,因为我在某处读到 Maven 使用 JDK 1.5 而不是 1.6。不管怎样,我删除它们,我的危险信号就会消失。此时,我的类看起来与原始 java 项目中的完全一样(除了我删除的 @override)
然后我做 Maven > 清洁。我得到构建成功
然后 Maven > 安装。我获得了构建成功
-
然后我选择我的类并执行 Run As > Java Application,我得到了这个丑陋的跟踪:
线程“main”中的异常 java.lang.NoClassDefFoundError: LMAXTrading/algos/HeartbeatClient 引起:java.lang.ClassNotFoundException:LMAXTrading.algos.HeartbeatClient 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我不知道从这里去哪里。你可以想象我经历了很多试验和错误,并在 SO 和其他地方搜索以找到一种方法来让它工作。但我就是不知道出了什么问题。因此,如果有人有想法,我愿意倾听。
我正在从导航器视图以及包资源管理器视图中粘贴目录布局下方
这是我添加了 JRE 配置的 POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>someproject</groupId>
<artifactId>someproject</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
【问题讨论】:
-
Maven 可以使用任何版本的 Java。您对此有误解 - 只需配置
maven-compiler-plugin。 -
你是否在 pom.xml 中添加了必要的 Maven 依赖项?
-
鉴于已经发生了多少变化,可能值得做一个项目 > 从 Eclipse 菜单中清理。
-
@MateiFlorescu 正如我所说,我的项目在转换为 Maven 之前运行良好
-
尝试右键单击项目-> Maven -> 更新项目。还要检查你的运行配置,有一个名为“Classpath”的选项卡,你必须有一个名为“Maven Dependencies”的条目。
标签: java maven noclassdeffounderror