簡體   English   中英

如何使用類路徑正確編譯Java類?

[英]How correctly compile a Java class using a classpath?

我有一個使用外部.jar庫的Java Main類。

所以我正在嘗試編譯它,將這個.jar文件放入類路徑中:

C:\Projects\edi-sta\src>javac -cp ojdbc6.jar:. Main.java

因此,我認為應該編譯Main.Java類以“導入”由ojdbc6.jar表示的類路徑。

它沒有給我任何錯誤消息並進行編譯,但是問題是當我嘗試執行已編譯的Main類時,我得到了以下錯誤消息:

C:\Projects\edi-sta\src>java Main
Hello World !!!
0
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
        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)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Main.main(Main.java:21)

C:\Projects\edi-sta\src>

它看不到在編譯時定義為ojdbc6.jaroracle.jdbc.OracleDriver類用作類路徑。

為什么我有這個問題? 我想念什么? 我該如何解決?

編輯1:

我將Main.java類移動到名為mainPkg的包中。

因此,在以下情況下,我還放置了ojdbc6.jar文件:

C:\Projects\edi-sta\src\mainPkg>dir
 Il volume nell'unità C è OS
 Numero di serie del volume: 9414-E1F8

 Directory di C:\Projects\edi-sta\src\mainPkg

12/02/2015  14:18    <DIR>          .
12/02/2015  14:18    <DIR>          ..
12/02/2015  14:13             1.337 Main.class
12/02/2015  14:05             1.285 Main.java
11/02/2015  11:01         3.692.096 ojdbc6.jar
               3 File      3.694.718 byte
               2 Directory   4.861.566.976 byte disponibili

執行以下命令創建Main.class文件:

javac -cp ojdbc6.jar;. Main.java

我在這里也用過; 分隔符,因為我在Windows下。

現在,我已經創建了Main.class文件,我嘗試執行此操作:

java -cp ojdbc6.jar;. Main

但我仍然收到“無法找到或加載主類”錯誤消息:

C:\Projects\edi-sta\src\mainPkg>javac -cp ojdbc6.jar;. Main.java

C:\Projects\edi-sta\src\mainPkg>java -cp ojdbc6.jar;. Main
Errore: impossibile trovare o caricare la classe principale Main

C:\Projects\edi-sta\src\mainPkg>

我想念什么? 怎么了?

TNX

您還需要在運行時在類路徑中添加jar:

java -cp ojdbc6.jar:. Main

否則,顯然,JVM無法從jar文件加載類:它將在哪里找到它們?

請注意,您永遠不要使用默認程序包。 養成為所有類定義程序包的良好習慣。

您也需要在運行時在CLASSPATH中使用外部JAR。 運行時添加相同的-cp參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM