我已经使用maven开发Java几天了。今天我根据these instructions编辑了我的pom.xml。突然运行mvn compile
给了我错误,好像我正在编译旧版本的java。像:
错误:-source 1.3
不支持泛型
现在我已将我的pom.xml与其原始内容配对,而我仍然收到此错误。我已经完成了mvn clean
并删除了目标下的所有内容,但仍然遇到此问题。
这是一个运行编译阶段的maven片段:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building bahToBeh 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ bahToBeh --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ bahToBeh --- [INFO] Compiling 9 source files to /home/doug/lucid/bah-bio-demo/bahToBeh/target/classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.880s [INFO] Finished at: Thu Dec 20 13:52:06 EST 2012 [INFO] Final Memory: 7M/105M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project bahToBeh: Compilation failure: Compilation failure: [ERROR] /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/java/com/lucid/bahdemo/parsers/pm/MeshReader.java:[23,4] error: generics are not supported in -source 1.3
我配对的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lucid</groupId>
<artifactId>bahToBeh</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>bahToBeh</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.digitalpebble</groupId>
<artifactId>behemoth-core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>marc4j</groupId>
<artifactId>marc4j</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
</project>
直到今天,这一直很好。我不确定我可能改变了什么设置或者我如何能够推动我的项目。我甚至仔细检查过安装了正确版本的java:
doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ java -version java version "1.7.0_10" Java(TM) SE Runtime Environment (build 1.7.0_10-b18) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ javac -version javac 1.7.0_10
这是JAVA_HOME
doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ echo $JAVA_HOME /usr/lib/jvm/java-7-oracle
Maven IS 使用pom.xml我认为是,如果我运行mvn -X compile
我得到:
DEBUG](f)project = MavenProject:com.lucid:bahToBeh:1.0-SNAPSHOT @ /home/doug/lucid/bah-bio-demo/bahToBeh/pom.xml
我还删除了我的maven repo rm -rf ~/.m2
,看到maven重新下载了同样的问题。
编辑 - 它突然神秘地工作
我不知道发生了什么,但现在突然间它正在工作。我认为我改变的一件事是我评论了一个测试。我去了测试并取消注释,然后运行mvn compile
,这次编译。有些州的某个地方不同步,现在事情神奇地起作用了吗?
我不想知道为什么我的工具突然变得不稳定,所以这不是问题的答案,只是更多的信息。
编辑 - 它也突然停止再次工作 看起来像是完全指定了要编译的版本,所以这就是胜利者。
答案 0 :(得分:8)
显式设置源和目标Java版本。 http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
答案 1 :(得分:-1)
作为一种解决方法,您可以尝试这一点(鉴于它非常特定于环境,这可能有所帮助)。
您可以使用插件强制执行编译版本。 Maven compilation plugin。
祝你好运!