2

几天来,我一直在使用 maven 进行 Java 开发。今天我根据这些说明编辑了我的 pom.xml 。突然运行mvn compile给了我错误,就好像我正在使用旧版本的 java 进行编译一样。像这样的东西:

错误:-source 1.3 不支持泛型

现在我已将 pom.xml 与其原始内容配对,但仍然出现此错误。我已经完成mvn clean并删除了目标下的所有内容,但仍然遇到这个问题。

这是运行编译阶段的 Maven 片段:

[INFO] 正在扫描项目...
[信息]                                                                         
[信息] --------------------------------------------- -------------------------
[INFO] 构建 bahToBeh 1.0-SNAPSHOT
[信息] --------------------------------------------- -------------------------
[信息]
[信息] --- maven-resources-plugin:2.3:resources (default-resources) @ bahToBeh ---
[警告] 使用平台编码(实际上是 UTF-8)复制过滤的资源,即构建依赖于平台!
[INFO] 跳过不存在的资源目录 /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/resources
[信息]
[信息] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ bahToBeh ---
[INFO] 编译 9 个源文件到 /home/doug/lucid/bah-bio-demo/bahToBeh/target/classes
[信息] --------------------------------------------- -------------------------
[信息] 构建失败
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:2.880s
[INFO] 完成时间:2012 年 12 月 20 日星期四 13:52:06 EST
[INFO] 最终内存:7M/105M
[信息] --------------------------------------------- -------------------------
[错误] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project bahToBeh: Compilation failure: Compilation failure:
[错误] /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/java/com/lucid/bahdemo/parsers/pm/MeshReader.java:[23,4] 错误:不支持泛型-源 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版本“1.7.0_10”
Java(TM) SE 运行时环境 (build 1.7.0_10-b18)
Java HotSpot(TM) 64 位服务器 VM(内部版本 23.6-b04,混合模式)
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我得到:

调试] (f) 项目 = MavenProject: com.lucid:bahToBeh:1.0-SNAPSHOT @ /home/doug/lucid/bah-bio-demo/bahToBeh/pom.xml

我还删除了我的 maven reporm -rf ~/.m2并看到 maven 重新下载了所有相同的问题。

编辑——它突然神秘地工作 了我不知道发生了什么,但现在它突然开始工作了。我认为我改变的一件事是我注释掉了一个测试。我去取消注释测试然后运行mvn compile,这次它编译了。某处的某些状态不同步,现在事情神奇地起作用了?

我讨厌不知道为什么我的工具突然变得不稳定,所以这不是问题的答案,只是更多信息。

编辑——它也只是突然停止工作, 看起来像是完全指定要编译的版本,但丁丁就是赢家。

4

2 回答 2

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>
于 2012-12-20T19:27:44.127 回答
-1

作为一种解决方法,您可以尝试这个(鉴于它非常特定于环境,这可能会有所帮助)。

您可以使用插件强制执行编译版本。 Maven 编译插件

祝你好运!

于 2012-12-20T19:11:34.213 回答