我正在使用带有Maven(4.0.5)的NetBeans 6.5 IDE(Build 090226)在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, 丙基三甲氧基硅烷
答案 0 :(得分:0)
使用Maven编译器插件不会影响Netbeans项目的编译器设置。
查看项目属性,您可以将源/二进制格式设置为您需要的版本。但请注意,这不会隐藏仅在IDE中设置的Java平台版本中可用的方法(最近很可能是1.6)。这可能是有问题的,例如IOException构造函数接受原因,以及Java 1.6或更高版本引入的其他API扩展。
当设置为1.5时,Netbeans会愉快地编译此代码,但它确实不会在1.5 JVM上运行。因此,要确保您还必须安装1.5 JDK,将其添加到您的平台列表(工具 - &gt;平台)并使用它来编译您的项目。作为额外的奖励,当使用正确的JDK时,NetBeans会在编辑器窗口中标记缺少的IOException构造函数。
答案 1 :(得分:0)
使用以下内容将'profile.xml'('Project Files'下的菜单选项'添加到主项目中,解决了我的问题:
<profiles>
<profile>
<id>netbeans-private</id>
<properties>
<netbeans.hint.jdkPlatform>JDK_1.5</netbeans.hint.jdkPlatform>
</properties>
</profile>
</profiles>
感谢andih的鼓励支持让我一直在寻找答案。
丙基三甲氧基硅烷