2015-04-22 18 views
2

我剛剛被推上了Java。如何在Java中確定jar文件的包名稱

對於現有的jar文件log4j.jar(http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip),我把它放在./lib子文件夾下,我的java源文件MyDemo.java位於./jms/example文件夾下,我使用jms.example作爲包在我的Java文件名和進口log4j的類:

package jms.example; 
import org.apache.log4j.*; 

當我編譯使用下面的命令,我得到了錯誤:

c:\JDK\bin\javac.exe -cp '.;.\lib\log4j.jar' -d .\classes -g .\jms\example\MyDemo.java 

錯誤:無法找到符號 私人最終記錄儀記錄;

上述代碼有什麼問題?我想知道: *包名與文件路徑有關嗎?例如,我把我的java文件在jms/example下,這是我必須將包命名爲jms.example的原因嗎?

當我提取其他由第三方提供的jar文件時,類文件的路徑是jms/example,第三方示例代碼使用jms.example作爲包名稱,並且它與類路徑jms/example一致,他們必須保持一致嗎?

  • 當提取log4j.jar,路徑的類文件是組織/阿帕奇/ log4j的/,那麼我應該有使用「導入org.apache.log4j。」導入類?如果我仍然使用jms.example作爲我的包名稱,那麼導入會將它加到類路徑上,即它實際上變成了jms.example.org.apache.log4j。
+0

有作爲一個JAR文件的包名沒有這樣的事。回答你最後一個問題,不。這裏有太多的困惑需要解決。 – EJP

+0

@EJP: 這工作: '進口org.apache.log4j.Logger;' 但是,如果我省略org.apache.log4j的任何部分,這是行不通的; 如何知道或確定記錄器類的包名稱?我認爲這是由jar文件內的文件路徑決定的。 –

+0

關於我以前的問題:是的,它是真正的包名稱必須與它在jar文件中的路徑相同。 –

回答

1

路徑不能用引號括起來;也就是說,它是錯的命令:

-cp '.;.\lib\log4j.jar' 

它應該是:

-cp .;.\lib\log4j.jar 
0

關於這個問題:
是包名,文件路徑有關係嗎?例如,我把我的java文件在jms/example下,這是我必須將包命名爲jms.example的原因嗎?
沒有,你可以使用任何軟件包名稱,例如:

package yyyyjmsxxx.zzzzexamplexxx;