我有一个类,我在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视图
粘贴到我的目录布局下面
这是我添加了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>
答案 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。