将简单的java项目转换为eclipse中的maven项目后的NoClassDefFoundError

时间:2012-10-12 13:08:11

标签: java maven noclassdeffounderror

我有一个类,我在OSX(Java 1.6)的eclipse中的标准java项目中编码。该类使用来自另一个库的类和接口 我选择了课程,然后选择Run As> Java应用程序和一切运行良好。

之后我尝试将我的项目作为Maven项目运行,事情开始有点令人沮丧。我总结了这里的所有步骤,希望有人会告诉我我做错了什么: - 从标准java项目中我右键单击并执行配置>转换为Maven项目并点击芬兰语。到目前为止一切都很好。

  • 然后构建路径>配置构建路径>并添加包含我的项目的文件夹。还不错

  • 然后我删除了所有的@Override注释,因为我在某处读到了Maven使用的是JDK 1.5而不是1.6。无论如何,我将它们移除,我的红旗消失了。此时我的类看起来与原始java项目完全一样(除了我删除的@override)

  • 然后我做Maven>清洁。我获得了成功

  • 那么Maven>安装。我获得了成功

  • 然后我选择了我的班级并且运行为> Java应用程序和我得到这个丑陋的痕迹:

    线程“main”中的异常java.lang.NoClassDefFoundError:LMAXTrading / algos / HeartbeatClient 引起:java.lang.ClassNotFoundException:LMAXTrading.algos.HeartbeatClient     在java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)     at java.security.AccessController.doPrivileged(Native Method)     在java.net.URLClassLoader.findClass(URLClassLoader.java:190)     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)     在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)     在java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我不知道从哪里开始。您可以想象我经历了大量的试验和错误,并在SO和其他地方进行了搜索,以找到一种方法来实现这一目标。但我无法弄清楚出了什么问题。所以,如果有人有想法,我已经准备好倾听了。

我从Navigator View以及Package explorer视图

粘贴到我的目录布局下面

layout Navigator view

enter image description here

这是我添加了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>

1 个答案:

答案 0 :(得分:7)

项目目录结构与默认的Maven目录结构不匹配。 Maven希望源位于根文件夹(包含src/main/java的文件夹)下的pom.xml目录中。此处的源位于src文件夹中,因此No sources to compile错误。

您可以移动源以使用默认的Maven目录结构,也可以通过将以下内容添加到pom的pom.xml部分来更改build以明确指定源目录:

<sourceDirectory>${basedir}/src</sourceDirectory>

可以找到有关Maven标准目录布局的更多信息here