0

Apache Commons io および lang3 ライブラリを使用するプログラムを作成しました。

Eclipse では正常に動作しますが、cmd から実行することができず、次のエラーが表示されます。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/la ng3/StringUtils 
    at mainActivity.main(mainActivity.java:37) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 1 more

cmdから実行するにはどうすればよいですか(バッチファイルで動作するように)

** 私は比較的新しく、Win 8 を使用しています (Maven は使用していません) **

4

7 に答える 7

1

必要な jar をクラスパスに追加します。ウィンドウズ:

> java -classpath yourjar.jar;lib\*.jar com.example.Main

ユニックス:

$ java -classpath yourjar.jar:lib/*.jar com.example.Main

唯一の違いは、ディレクトリ区切り記号 ( // \) とパス区切り記号 ( :/ ;) です。これは、Apache jar がlibプロジェクトのディレクトリにあることを前提としています。

于 2013-07-08T15:00:56.497 に答える
1

Eclipse からプログラムを実行すると、jar ファイルが Eclipse によってクラスパスに追加されます。ただし、同じ形式のコマンド プロンプトを実行する場合は、jar ファイルを明示的にクラスパスに配置する必要があります。

2つの方法があります

  • 次のようにクラスパスを指定してプログラムを実行します

java -classpath ".;c:\yourLib*" YourApp

yourLib、apache-commons jar を含むフォルダーです。

  • CLASSPATHで区切られたjarの絶対パスへの値を持つ環境変数を設定します;

CLASSPATH=D:\yourLib\ を設定します。

次に、クラスパス オプションなしでプログラムを実行します。ランタイムは、以前に定義された環境変数から必要なクラスパスを選択します。

Java YourApp

注: Windows プラットフォームを想定しています。

于 2013-07-08T15:04:03.107 に答える
0

クラスパスに問題があります。Eclipse は、プロジェクト設定を使用して、クラスパス内のランタイム ライブラリの依存関係を解決できます。Javaの にファイルを追加commons-lang*.jarします。またはオプションを使用して、コマンドラインでクラスパスを設定できます。commons-io*.jarclasspath-cp-classpath

于 2013-07-08T14:56:46.670 に答える
0

クラスパスを apache-coomons ライブラリで更新します。

于 2013-07-08T14:54:15.070 に答える
-1

Mavenを使用している場合

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.3</version>
</dependency>
于 2013-07-08T15:06:15.330 に答える