6

を持つクラスを含む Maven プロジェクトのルートにある Windows シェルで、次のように入力します。

public static void main(String[] args)

実行したいメソッド。

mvn exec:java -Dexec.mainClass="com.spp.config.main.SqlGeneratorHarness" -e

クラスが存在し、そのパッケージにコンパイルされます (つまり、target/classes/com/spp/config/main/SqlGeneratorHarness.class)。

そうですか...

+ Error stacktraces are turned on.  
[INFO] Scanning for projects...  
[INFO] Searching repository for plugin with prefix: 'exec'.  
[INFO] ------------------------------------------------------------------------  
[ERROR] BUILD FAILURE  
[INFO] ------------------------------------------------------------------------  
[INFO] Invalid task '.mainClass=com.spp.config.main.SqlGeneratorHarness': you must specify a valid 
       lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
[INFO] ------------------------------------------------------------------------
[INFO] Trace org.apache.maven.BuildFailureException: Invalid task' .mainClass=com.spp.config.main.SqlGeneratorHarness': you must specify 
       a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
       at org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor(DefaultLifecycleExecutor.java:1830)
       at org.apache.maven.lifecycle.DefaultLifecycleExecutor.segmentTaskListByAggregationNeeds(DefaultLifecycleExecutor.java:462)
       at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:175)
       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
       at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
       at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
       at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Tue Sep 27 14:33:52 PDT 2011
[INFO] Final Memory: 3M/122M
[INFO] ------------------------------------------------------------------------

私は次のようなバリエーションを試しました

mvn exec:exec -Dexec.executable="Java" [...]

mvn org.codehaus.mojo:exec-maven-plugin:1.2.1:java [...]

無駄に。何を与える?

Windows 7 Enterprise 64 ビットで Maven 2.2.1、Java JDK 1.6.0_27 を実行しています。

exec-maven-plugin の pom.xml からのスニペットは...

<plugin> 
   <groupId>org.codehaus.mojo</groupId> 
   <artifactId>exec-maven-plugin</artifactId> 
   <version>${exec-maven-plugin.version}</version> 
</plugin> 

バージョンが設定されている場所<properties>

4

3 に答える 3

19

もう一度考えてみると、Windows PowerShell を使用すると、最初に報告した例外が発生します。ただし、cmd.exe を使用する場合は、私が投稿したコマンド (二重引用符の有無にかかわらず) を使用してクラスを実行できるはずです。

于 2011-09-29T20:49:45.193 に答える
1

非常に基本的な問題が発生しています。引用符をなくしてみてください。それらはそこでは必要ありません。実際、次のようなもっと単純なものから始めてみてください

mvn -e exec:java -Dexec.mainClass=foo 

これにより、「Javaクラスの実行中に例外が発生しました。foo」というエラーが発生し、根本的な原因はClassNotFoundExceptionである必要があります。

Caused by: java.lang.ClassNotFoundException: foo
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)

自分で入力してください。他の場所からコマンドをコピーして貼り付けないでください。

于 2011-09-28T01:41:38.227 に答える
0

簡単なチェックリスト:

  1. ~/.m2フォルダーの名前を変更して再度実行しmvn exec:java ...、Maven に中央からすべてを再度ダウンロードさせます。
  2. exec プラグインが中央からダウンロードされていることを確認します。(ローカル リポジトリに中央リポジトリと同じファイルが含まれていることを確認してください。)
  3. (および親 pom も)で疑わしいタグrepositorypluginRepositoryタグを探しています。pom.xml
  4. repository疑わしい、pluginRepositoryおよびmirrorのタグを探していsettings.xmlます。
  5. 他のマシンでプロジェクトを確認中 - コピーして、他のマシンで exec:java をビルド/実行してみてください。
  6. Maven 3.x をダウンロードして、それで exec を実行してみてください。
于 2011-09-28T19:45:34.277 に答える