0

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

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

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

  • 然后我删除了所有@Override 注释,因为我在某处读到 Maven 使用 JDK 1.5 而不是 1.6。不管怎样,我删除它们,我的危险信号就会消失。此时,我的类看起来与原始 java 项目中的完全一样(除了我删除的@override)

  • 然后我做 Maven > clean。我得到了构建成功

  • 然后 Maven > 安装。我获得了构建成功

  • 然后我选择我的类并执行 Run As > Java Application ,我得到了这个丑陋的跟踪:

    线程“main”中的异常 java.lang.NoClassDefFoundError: LMAXTrading/algos/HeartbeatClient 原因:java.lang.ClassNotFoundException: LMAXTrading.algos.HeartbeatClient 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:306) at 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>
4

1 回答 1

7

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

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

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

更多关于 Maven 标准目录布局的信息可以在这里找到。

于 2012-10-12T17:29:50.500 回答