我已經在java中使用eclipse ide創建了一個簡單的項目來測試log4j功能。 我需要使用java中的jar工具從命令提示符運行應用程序。 logtest.java文件是簡單的java文件,它定義了一個記錄器,如下所示。 它引用另一個Jar文件中的Logger。下面是目錄結構。在JDK 1.6中執行jar文件給出問題
package com;
import org.apache.log4j.Logger;
public class logtest {
private static Logger logger = Logger.getLogger(logtest.class);
public static void main(String[] args) {
System.out.println("---------------HIIIIII-----------");
}
下面是我在eclipse中的項目中創建的目錄結構。
src/com/logtest.java
lib/log4j-1.2.17.jar
清單文件條目如下,我手動創建了maifst文件。
Manifest-Version: 1.0
Main-Class: com.logtest
Class-Path: lib/log4j-1.2.17.jar
Jar文件的內容如下,我使用jar實用程序解壓縮。
META-INF/MANIFEST.MF
.project
com/logtest.class
manifest.mf
lib/log4j-1.2.17.jar
.classpath
我已出口的jar文件,當我嘗試使用的罐子JarTest2.jar我收到以下錯誤
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at com.logtest.<clinit>(logtest.java:6)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
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
的commond java的運行我知道它的一類未發現異常,但奇怪的是,當我使用jdk1.5創建相同的jar並運行命令工具時,jar運行成功,並且java類沒有任何錯誤地執行。
我不知道爲什麼這是因爲一切都是一樣的。
mine是一臺64位Windows 7機器,其運行的其他機器是一臺32位XP機器。
當然,eclipse ide的版本在兩臺機器上都不同。
您能否讓我知道我在做什麼或者我是否錯過了其他東西。
感謝 Vikeng21
你說你想測試Log4j? 但是在你的'main'方法中,你正在使用'System.out.println',這不是'log4j'。 – 2012-08-12 19:55:23
嗨,埃米爾。我的意圖是看到記錄器能夠正常工作,並從另一個目錄中的另一個jar文件(log4j.jar)中識別出來。系統只是爲了測試目的,我認爲這裏無論是否存在都不重要,但請強調手頭的問題。 – vikeng21 2012-08-13 02:51:26