2009-07-01 19 views
2

私は、多数のjarファイル依存関係を持つ大きなJavaプロジェクトを持っています。 EclipseまたはNetbeansからプロジェクト(execを使用)を実行しようとすると、Mavenは例外をスローします。この例外はクラスパス上のエントリ数が多すぎます(必要なエントリの2/3のみが含まれています)。誰かがこれの回避策を知っていますか? (実行可能なjarをビルドして端末から実行することを除いて) "classpath-buffer"サイズを "拡張"することは可能でしょうか?Maven execプラグインを解決するには:classpath too long error?

答えて

2

これはMavenのexecプラグインのバグです。MEXEC-68に記載されています。記者がパッチを作成しましたので、すぐに解決されることを願っています。

この設定をmaven-jar-pluginに使用してマニフェストファイルにクラスパスを追加し、依存関係をフォルダに追加し、そのフォルダだけをCLASSPATH envvarに追加することで対処できます。例えば

:JARはCLASSPATHフォルダにあることを、あなたはMavenのexecのプラグインhiddingを使用してJARを実行できる場合

Class-Path: plexus-utils-1.1.jar commons-lang-2.1.jar 

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     ... 
     <configuration> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
      </manifest> 
      </archive> 
     </configuration> 
     ... 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

これは、のようなマニフェスト何かに追加されます

mvn exec:exec [...] -Dexec.classpathScope="test" 

私は-Dexec.classpathScope = "test"を使ってmakを作成しました。プラグインは依存関係を無視してスコープテストのものだけを追加します。

0

Java 6では、クラスパスエントリにワイルドカードを使用できます。正確な構文については、このページのSetting the classpathをチェックし、右側のセクションに「Understanding the class path and package names」を検索して検索してください。

または、必要なすべてのjarを短いパスの単一のフォルダに配置することによって、パスを短縮してみてください。例えばC:\jars\

+0

:EXECコマンド –

+0

そして、クラスパスのワイルドカードのための多くにはまだ、運と\ JR \? – jitter

+0

Java 5を使用していて、それを私の手に渡しています(ただし、アップグレードは顧客に要求されています) –

1

この問題は、Netbeans 6.10M1で修正されています。 Bug 188864をご覧ください。古いバージョンをお持ちの場合は、これを自分で修正することができます(org-netbeans-modules-maven.jar内のxmlファイルを編集するだけです)。アクションをIDEにMavenのゴールをバインドする方法を説明したところ

すると、Mavenのベストプラクティス(http://wiki.netbeans.org/MavenBestPractices#Binding_Maven_goals_to_IDE_actions)をチェックすることを忘れないでください。

よろしく、

マッハ

私はすでにCへのパスを短くしている
関連する問題