私はクラスを生成し、JDKのtools.jarでコンパイルするant build.xmlを使用しています。maven-antrun-plugin 1.6 Java 1.4.2バージョンでクラスをコンパイルしたい
私はMAVEN 2.2.1バージョンを使用しています。 MAVENを実行するJDK 1.5。 Maven 2.2.1のバージョンはJDK 1.5以上しかサポートしていないので、私はそれを使用しなければなりません。
このmaven-antrun-pluginでは、コンパイラのソースバージョンもターゲットバージョンも指定できません。 したがって、生成されたクラスは、現在実行中のJVM(JDK)に対して、rt.jarとプラグイン依存関係で提供されているtools.jarを使用してコンパイルされます(またはjvmのlib/extディレクトリに格納されます)。
Mavenを1.5で実行すると、JDK 1.4.2バージョンでこれらのクラスをコンパイルするためにJVM(jdk1.5.0_22)が必要です。なぜなら、それらをデプロイするサーバーが1.4 JVMで実行されているからです私は、私の日食やコマンドラインからMAVENプラグインでコンパイルしている間に例外を取得しています。
別のJavaバージョンを使用してクラスをコンパイルするようにantrunに指示する方法が見つかりませんでした。 私は次の回避策を試してみました:1.4バージョンを指すように
- 変更tools.jarの依存性=>コンパイラは、現在実行中の1.5 JVMからrt.jarのを使用して、クラスファイルのバージョンが一致していません(version 49.0、expecting 48.0)
- 1.4 rt.jar =に依存関係を追加すると、ブートクラスパスにrt.jarを指定する必要があるため、何も変更されません。
次は、私が使用しているサンプルコードです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<compilerVersion>${java-version}</compilerVersion>
<compilerArguments>
<classpath>${java.home}/lib/tools.jar</classpath>
<classpath>${java.home}/jre/lib/rt.jar</classpath>
</compilerArguments>
<tasks>
<ant antfile="WPSEjb_build.xml"/>
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>crimson</groupId>
<artifactId>crimson</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>rt</artifactId>
<version>${java-version}</version>
<scope>system</scope>
<systemPath>${java.home}/jre/lib/rt.jar</systemPath>
</dependency>
</dependencies>
</plugin>
このような例外が発生しています。
WPSClient.java:22: cannot access java.lang.Object
[wlwBuild] [Build] bad class file: C:\Java\jdk1.5.0_22\jre\lib\rt.jar(java/lang/Object.class)
[wlwBuild] [Build] class file has wrong version 49.0, should be 48.0
[wlwBuild] [Build] Please remove or make sure it appears in the correct subdirectory of the classpath.
[wlwBuild] [Build] public static WPSServerRemote getWPSServer() throws MitchellException {
[wlwBuild] [Build]^
[wlwBuild] [Build] 3 errors
[wlwBuild] [Build] BUILD FAILED
[wlwBuild] [Build] Compile failed; see the compiler error output for details.
[wlwBuild] [Build]
[wlwBuild] java.lang.reflect.InvocationTargetException
[wlwBuild] java.lang.reflect.InvocationTargetException
[wlwBuild] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[wlwBuild] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[wlwBuild] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[wlwBuild] at java.lang.reflect.Method.invoke(Method.java:592)
[wlwBuild] at workshop.core.Compile.start(Compile.java:19)
[wlwBuild] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[wlwBuild] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[wlwBuild] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[wlwBuild] at java.lang.reflect.Method.invoke(Method.java:592)
[wlwBuild] at workshop.core.Starter.invokeStart(Starter.java:34)
[wlwBuild] at workshop.core.Compile.main(Compile.java:9)
[wlwBuild] Caused by: java.lang.NoClassDefFoundError: org/apache/crimson/tree/XmlDocument
[wlwBuild] at workshop.util.ide.PreferencesNode._export(PreferencesNode.java:540)
[wlwBuild] at workshop.util.ide.PreferencesNode.exportSubtree(PreferencesNode.java:820)
[wlwBuild] at workshop.util.ide.PreferencesNode.flush(PreferencesNode.java:984)
[wlwBuild] at workshop.core.App$15.run(App.java:1000)
[wlwBuild] at workshop.core.asynctask.AsyncTaskManager.showDialogWhileRunning(AsyncTaskManager.java:272)
[wlwBuild] at workshop.core.asynctask.AsyncTaskManager.showDialogWhileRunning(AsyncTaskManager.java:482)
[wlwBuild] at workshop.core.App.exit(App.java:994)
[wlwBuild] at workshop.core.CompileHelper.compile(CompileHelper.java:298)
私は私の設定JDK 1.4.2バージョンのmaven-antrun-プラグインを使って、私のクラスをコンパイルすることができますか教えてください。
こんにちはJon7、 ビルドから次のWeblogic Workshopコマンドを使用しようとしています。xmlと私はコマンドの下でjavac情報を提供することができませんので、私はmaven-antrun-pluginの下でコンパイラー情報を設定することを検討していますが、今まで私はこのプラグインに対してどのように異なるコンパイラー情報を提供できますか? 私のbuild.xml情報は次のとおりです。 <ターゲット名= "wbuild"> \t \t <プロジェクトをビルド= 「WPSEjb」/> のmaven-antrun-プラグイン –
user886614
下コンパイラとしてJDK 1.4.2を提供するために、どのように は、私は少しより明確にするために私の答えを編集しました。 – Jon7
だから、の代わりに、1.4.2 を渡す必要があります。 1.4 ?? –
user886614