Java プロジェクトの実行に問題があります。
E:\Workspace\compiled>java -classpath server\libraries\log4j-1.2.16.jar;E:\Workspace\compiled\server\service-1.0-SNAPSHOT.jar;E:\Workspace\compiled\server\libraries\log4j-1.2.16.jar -Djava.security.policy=E:\Workspace\compiled\socket.policy -Djava.rmi.server.codebase=file:///E:\Workspace\compiled\server\service-1.0-SNAPSHOT.jar -jar E:\Workspace\compiled\server\service-1.0-SNAPSHOT.jar E:\Workspace\compiled\log4j.properties
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator
at pwr.mgr.server.service.Launcher.main(Launcher.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.PropertyConfigurator
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
Mavenを使用してコンパイルされ、.jarファイルになります。今日、ログに wimple System.out の代わりに log4j を使用することにしました...この変更の前は問題なく動作していました
これが私がそれを実行する方法です
java -cp .;%SRV_ADDR%;%SRV_LIBS% -Djava.security.policy=%POLICY_FILE% -Djava.rmi.server.codebase=file:///%SRV_ADDR% pwr.mgr.server.service.Launcher %CD%\log4j.properties
SRV_ADDR は私の service.jar を指します (Launcher クラスを使用)
SRV_LIBS は log4j-1.2.16.jar を指します
追加した "。;" 言及されたファイルは、これを起動しようとしているファイルの子ディレクトリにあるため、最初はそれが役立つことを望んでいます。
また、ここのどこかに log4j ライブラリを haev する必要があることにも言及する必要があります。これは、アプリを別のマシンに移動する予定であり、そこに期待するライブラリがわからないためです。おそらく純粋な Java だけなので、すべてを 1 つのパッケージで提供する必要があります。 .
誰かが Launcher クラスに興味を持っている場合、それは非常に簡単です:
public class Launcher {
public static void main(String args[]) {
PropertyConfigurator.configure(args[0]);
if (System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager());
}
try {
Runtime.getRuntime().exec("rmiregistry");
ServerIntf obj = new Server();
Registry registry = LocateRegistry.getRegistry();
registry.rebind("Server", obj);
System.out.println("Server bound in registry");
} catch (Exception e) {
System.out.println("Server err: " + e.getMessage());
e.printStackTrace();
}
}
}
誰かが私が間違っていることを知っていますか? この 1 つの log4j jar ファイルだけを追加するだけでは不十分でしょうか? Maven リポジトリからコピーしました。
EDIT1は、私が指しているjarをlog4j-1.2.16-javadoc.jarからlog4j-1.2.16.jarに変更しましたが、役に立ちませんでした