1

以前はコンパイルして正常に実行していたプロジェクトがあります。ただし、java 7 コンパイラを使用して文字列で switch を使用しようとすると、問題が発生します。Ant を使用してこのプロジェクトをビルドします。

Ant 構成ファイル (projectBuilder.xml) :

<?xml version="1.0"?>
<project name="TutoMigLayout" default="Main" basedir=".">
  <!-- Sets variables which can later be used. -->
  <!-- The value of a property is accessed via ${} -->
  <property name="src.dir" location="src" />
  <property name="lib.dir" location="lib" />
  <property name="build.dir" location="bin" />

  <!--
    Create a classpath container which can be later used in the ant task
  -->
  <path id="build.classpath">
    <fileset dir="${lib.dir}">
      <include name="**/*.jar" />
    </fileset>
  </path>

  <!-- Deletes the existing build directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
  </target>

  <!-- Creates the  build  directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
  </target>

  <!-- Compiles the java code -->
  <target name="compile" depends="clean, makedir">
  <echo message="Using Java version ${ant.java.version}."/>
    <javac target="1.7" srcdir="${src.dir}" destdir="${build.dir}" debug="true" classpathref="build.classpath" />
  </target>

  <target name="Main" depends="compile">
    <description>Main target</description>
  </target>

</project> 

コンソールでこれを取得します:

Buildfile: C:\Users\workspace\TutoMigLayout\projectBuilder.xml
clean:
[delete] Deleting directory C:\Users\workspace\TutoMigLayout\bin
makedir:
[mkdir] Created dir: C:\Users\workspace\TutoMigLayout\bin
compile:

[echo] Using Java version 1.7.
[javac] C:\Users\workspace\TutoMigLayout\projectBuilder.xml:31: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 5 source files to C:\Users\workspace\TutoMigLayout\bin
[javac] javac: invalid target release: 1.7
[javac] Usage: javac <options> <source files>
[javac] use -help for a list of possible options

BUILD FAILED
C:\Users\workspace\TutoMigLayout\projectBuilder.xml:31: Compile failed; see the compiler error output for details.

Total time: 481 milliseconds

コンパイル ターゲットからコンパイラ バージョンを削除すると、代わりに次のようになります。

[javac] C:\Users\invite01.acensi\workspace\TutoMigLayout\src\components\EqualsAction.java:26: incompatible types
[javac] found   : java.lang.String
[javac] required: int
[javac]         switch(operator) {
[javac]                ^

Java 7 で文字列に切り替えることができると思いましたか?

もう一度実行をクリックすると、まったく別のメッセージが表示されます。

Error : could not find or load the main class test.Test

編集: javac -version javac 1.6.0_32 OK どうすれば変更できますか? コンパイラ準拠レベルを 1.7 に設定し、jre7 を選択するだけで十分だと思いましたか?

4

1 に答える 1

2

source="1.7"属性を追加してみてください。これは、言語機能を制御します。ただし、ほとんどの場合、targetsource属性の両方を同じバージョンに設定する必要があります。また、他の人が述べたように、コンパイラはこのバージョンをサポートする必要があります。

于 2013-08-28T15:16:25.757 に答える