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

jul*_*e64 0 java noclassdeffounderror maven

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

之后我尝试将我的项目作为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:java.net的java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)中的LMAXTrading.algos.HeartbeatClient.位于java.lang.ClassLoader.findClass(URLClassLoader.java:190)的security.AccessController.doPrivileged(Native Method),位于sun.misc.Launcher的$ java.lang.ClassLoader.loadClass(ClassLoader.java:306)$ AppClassLoader.loadClass( Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

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

我从Navigator View以及Package explorer视图粘贴到我的目录布局下面

布局导航器视图

在此输入图像描述

这里是我添加了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>
Run Code Online (Sandbox Code Playgroud)

Abh*_*kar 7

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

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

<sourceDirectory>${basedir}/src</sourceDirectory>
Run Code Online (Sandbox Code Playgroud)

有关Maven标准目录布局的更多信息,请点击此处.