【问题标题】:Building a JUnit test in NetBeans for use with older Java version在 NetBeans 中构建 JUnit 测试以用于较旧的 Java 版本
【发布时间】:2012-11-01 16:50:07
【问题描述】:

我正在使用 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,而不是 NetBeans 启动时使用的 JDK?

TIA, 伊莱恩

【问题讨论】:

    标签: java maven netbeans netbeans-plugins


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的项目的源代码/二进制设置已经设置为 1.5(我不知道要检查它,但它已经设置好了)并且 Java 平台已经包含了我的 1.5 平台。但是编辑器窗口仍然是 1.6 的源代码。所以你是说除了用 1.5 启动 NetBeans 之外,没有办法让 IDE 使用 1.5 作为 IDE Java 编辑器?
    • 您不必使用特定版本启动 Netbeans。您可以通过在项目构建/编译器设置中选择所需的平台来更改项目的平台 JDK/版本。您还可以通过扩展 Maven 项目的 Java 依赖项文件夹来检查这一点。它应该显示您的 JDK 1.5 而不是 JDK 1.6 或默认 JDK。如果显示 JDK 1.6,请转到项目属性并将构建/编译平台更改为 JDK 1.5,之后您的项目中应该不再引用 1.6 JDK。
    • 不是将 Source/Binary 设置为 1.5“选择所需的平台”吗?那已经设置为1.5。 “项目构建/编译器设置”是否在其他地方?我进行了搜索,但在我的 IDE 中的任何地方都没有找到名为“Java Dependencies”的文件夹——你指的是不是 6.5 的版本?我的 Java 平台列表中同时列出了 1.5 和 1.6。 1.6 版被列为默认版本(这不是从使用 1.6 开始的 netbeans 开始的吗?)。我知道的唯一特定于项目的配置是在 pom.xml 文件中,并且在我的原始帖子中列出了对 java 的引用。你能说得更具体点吗?
    【解决方案2】:

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

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

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

    伊莱恩

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2010-10-06
      • 2014-11-08
      • 2013-06-16
      相关资源
      最近更新 更多