1

私はMavenを初めて使用します。プロジェクトをコンパイルするために、mvncompileを押します。ただし、Maven内からプロジェクトを実行する方法がわかりません。たとえば、私がヒットしたとき

mvn exec:java -Dexec.mainClass = "main.java.org.dbalancer.StartProgram"

Mavenの苦情:

java.lang.NoClassDefFoundError: com/sanityinc/jargs/CmdLineParser$OptionException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
at java.lang.Class.getMethod0(Class.java:2685)
at java.lang.Class.getMethod(Class.java:1620)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.sanityinc.jargs.CmdLineParser$OptionException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 6 more

これは、jargsライブラリがクラスパスに含まれていないことを意味します。ただし、私のプロジェクトでは、ターゲットフォルダーの下にライブラリが含まれていません。つまり、使用するライブラリは、自分でダウンロードしてクラスパスに含める必要があります(または.m2 /フォルダーを使用します)。たとえば、target / classesフォルダーの下にあり、必要なすべてのライブラリをダウンロードした場合、このコマンドは機能します:java -cp。:../../ lib / jargs-2.0-SNAPSHOT.jar:../.。 /../dom4j-2.0.0-ALPHA-2.jar:../../../log4j-1.2.17.jar main.java.org.dbalancer.StartProgram

しかし、それは少し冗長ではありませんか?どうすればMavenの内部からそれを実行できますか?Javaコマンドを使用して実行できますが、必要なライブラリを自分でダウンロードすることはできませんか?

更新:わかりました、問題は私がそのように含めたライブラリでした:

<dependency>
  <groupId>jargs_local</groupId>
  <artifactId>jargs</artifactId>
  <version>2.0-SNAPSHOT</version>
  <scope>system</scope>
  <systemPath>${basedir}/lib/jargs-2.0-SNAPSHOT.jar</systemPath>
</dependency>

ここで、公式のMavenリポジトリに移動した場所でジャーグします。ただし、mvn execを高速化する方法を知っている人はいますか?何かをチェックしたいだけなら少し遅いです。

4

3 に答える 3

2

maven-execプラグインがクラスパスを設定する必要があります。おそらく、依存関係としてjargsが欠落していますpom.xmlか(完全なmvnダンプと同様にそれを確認できますか?)

乾杯、

于 2013-01-22T11:23:38.973 に答える
1

自給自足の実行可能なjarを作成する簡単な方法の1つは、Mavenアセンブリプラグインを使用して依存関係のあるjarを作成することです。

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

于 2013-01-22T11:24:45.053 に答える
1

たとえば、pom.xmlに依存させる必要があります:</ p>

  <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.0</version>
     </dependency>

また

<build>
        <plugins>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.6</source>
                  <target>1.6</target>
                  <encoding>UTF-8</encoding>
                  <compilerArguments>
                   <extdirs>src\main\webapp\WEB-INF\lib</extdirs>
                 </compilerArguments>
              </configuration>
            </plugin>
        </plugins>
    </build>

また

<dependency>
    <groupId>org.swinglabs</groupId>
    <artifactId>swingx</artifactId>
    <version>0.9.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/swingx-0.9.3.jar</systemPath>
</dependency>
于 2013-01-22T11:25:19.383 に答える