0

我正在使用 NetBeans 6.5 IDE (Build 090226) 和 Maven (4.0.5) 在 Fedora 系统上使用 Java (1.6.0_06) 开发 Java 软件。

我正在对一些遗留代码进行更新,我想为它构建一个测试(使用 JUnit)。该代码用于 Java 1.5。为了以最快、最简单的方式提供测试数据,我想通过扩展 ResultSet 接口来实现一个简单的模拟数据集。问题是,尽管我的项目设置为使用 JDK 1.5 构建和测试:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <fork>true</fork>
    <executable>/usr/java/jdk1.5.0_14/bin/javac</executable>
    <compilerVersion>1.5</compilerVersion>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <!-- snip some non-jvm configuration -->
    <jvm>/usr/java/jdk1.5.0_14/bin/java</jvm>
    <forkMode>once</forkMode>
  </configuration>
</plugin>

编辑器仍然想让我的类抽象,因为它认为我缺少 Java 1.6 ResultSet 中存在的方法,但这些方法使用 Java 1.5 中不存在的类(NClob 和 RowId 和 SQLXML)。

我的编译器插件似乎设置正确——我可以成功构建和运行这个 JUnit 测试,但是我的整个源代码树都显示错误图标(有效地掩盖了任何真正的错误)。如果我在 ResultSet 导入语句中使用“Go To Source”函数(或“Go To Declaration”),它会将我带到 Java 1.6 源 zip,但在方法上会响应“无法在此处执行 Go To Source”。

我错过了什么?如何让 NetBeans 编辑器窗口识别此代码使用 1.5 JDK,而不是 JDK NetBeans 启动?

TIA,伊莱恩

4

2 回答 2

0

将“profile.xml”(“项目文件”下的菜单选项添加到主项目中,解决了我的问题:

<profiles>
  <profile>
    <id>netbeans-private</id>
    <properties>
      <netbeans.hint.jdkPlatform>JDK_1.5</netbeans.hint.jdkPlatform>
    </properties>
  </profile>
</profiles>

感谢 andih 的鼓励支持,这让我一直在寻找答案。

伊莱恩

于 2012-11-01T22:01:27.760 回答
0

使用 Maven 编译器插件不会影响 Netbeans 项目的编译器设置。

查看项目属性,您可以将源/二进制格式设置为您需要的版本。但请注意,这不会隐藏仅在您的 IDE 中设置的 Java 平台版本(现在很可能是 1.6)中可用的方法。这可能会出现问题,例如 IOException 构造函数接受一个原因,以及 Java 1.6 或更高版本引入的其他 API 扩展。

当设置为 1.5 时,Netbeans 会很高兴地编译此代码,但它确实不会在 1.5 JVM 上运行。因此,为了确保您还必须安装 1.5 JDK,将其添加到您的平台列表(工具 -> 平台)并使用它来编译您的项目。作为额外的奖励,当使用正确的 JDK 时,NetBeans 会在编辑器窗口中标记诸如缺少的 IOException 构造函数之类的东西。

于 2012-11-01T18:11:32.223 回答