簡體   English   中英

如何用Java導入JAR和程序包

[英]How do I import JARs and Packages in Java

我對Java比較陌生。 我一直在使用Eclipse做一些工作,但是我想回到基礎知識,而只是將文本編輯器與JDK結合使用。 我現在遇到的問題是Eclipse和其他IDE隱藏了很多基本知識,這對於了解和完全理解非常重要。 這就是我想要做的:

  • 我創建了一個名為“ C:\\ Java Projects”的目錄,在該目錄下,創建了3個子文件夾Project1,Project2和SharedJars。 Project1和Project2都有子類,如類和源。 Poject1源.java文件位於“ c:\\ Java Projects \\ Project1 \\ source \\ com \\ myApp”中

  • Project1和Project2都是使用Log4J JAR的程序包,該程序位於SharedJars文件夾中。 在Eclipse世界中,我可以設置一些內容來告訴Eclipse我的項目將使用哪些JAR,然后執行import org.apache.log4j.Logger之類的工作,效果很好。 但是我正在努力使這個工作。

  • 我已經設置了CLASSPATH環境變量,例如“ C:\\ Java Projects \\ SharedJars \\ log4j-1.2.15.jar”

  • 然后,我執行以下操作:

    cd Project1 \\ source
    javac -d .. \\ classes com \\ myApp \\ *

  • 這會產生很多相關的錯誤,例如

拾起_JAVA_OPTIONS:-Duser.home =“ C:\\ Java Projects”
com \\ myApp \\ Monitor.java:11:找不到符號
符號:類記錄器
位置:com.myApp.Monitor類
私有靜態Logger LOG;

一些問題:1)我仍然需要導入org.apache.log4j.Logger嗎? 2)如果是這樣,什么決定了軟件包的FQDN? 3)運行Javac是否需要在特定目錄中? 目前,我正在進入Project1的源目錄(java / bin已經在我的PATH中)

對不起這些愚蠢的問題。 我已經瀏覽了太多的網站,但是很多網站都沒有介紹基本知識。 我希望這是有道理的。

羅格·約翰

歡迎來到SO。

為了回答這個問題:

我仍然需要導入org.apache.log4j.Logger嗎?

是的,您始終需要在要使用的任何類中使用導入指令。 除非您告知Java,否則Java不會加載任何東西,即使它在類路徑中也是如此。

如果是這樣,什么決定了軟件包的FQDN?

在jar內,.class文件位於以下子目錄中: org/apache/log4j ...等。這是確定FQDN的方式,它基本上用作命名空間構造,因此您可以具有兩個或多個類同名-這也是Java無法在類路徑上加載所有內容的原因。 如果這樣做的話,將無法消除歧義並確定您想要哪個班級。

我需要在特定目錄中才能運行javac嗎?

否。您可以在任何位置(只要您可以從任何位置)訪問類依賴,就可以在任何位置運行它。 如果在命令行上指定,則可以是相對的類路徑;如果在環境變量中指定,則可以是絕對的類路徑。 同樣,您不需要在特定目錄下即可使用java但您確實需要它才能到達正確的位置。

1)我仍然需要導入org.apache.log4j.Logger嗎?

是的,您這樣做了,這應該可以解決問題中的錯誤,因為CLASSPATH是正確的。

2)如果是這樣,什么決定了軟件包的FQDN?

import不會更改包的FQDN。 它僅允許您在該文件中簡單地將org.apache.log4j.Logger引用為Logger

3)運行Javac是否需要在特定目錄中?

否,但是如果當前目錄是您正在編譯的項目的source目錄,這是最簡單的(如果不是,則可以使用javac-sourcepath選項解決該問題)。

對於運行該程序,您可能需要創建一個Project1.jar並使用清單來告訴它在哪里可以找到log4j.jar ,但這是一個單獨的問題

我發布我的解決方案,因為上述解決方案都不適合我。 它適用於Windows XP / 7。

  1. 從log4j網站[1]下載zip或tar軟件包到您的計算機並解壓縮下載的文件。
  2. 將文件log4j-VERSION.jar復制到您的LOG4J_ISTALLATION_DIR(例如c:\\ javalibs \\ log4j-1.2.16.jar)
  3. 打開“我的電腦/計算機”的屬性(圖標應放在桌面上,只需單擊鼠標右鍵並選擇“屬性”)
  4. 打開選項卡“高級系統設置”。
  5. 打開標簽“高級”
  6. 單擊按鈕“環境變量”。
  7. 在“環境變量”區域中找到變量CLASSPATH,將其與左按鈕匹配,然后單擊“編輯”按鈕。
  8. 粘貼/輸入您的log4j庫的路徑-LOG4J_ISTALLATION_DIR \\ log4j-VERSION.jar; (例如c:\\ javalibs \\ log4j-1.2.16.jar;)
  9. 點擊“確定”按鈕。
  10. 在“環境變量”窗口中單擊“確定”按鈕。
  11. 在“系統屬性”窗口中單擊“確定”按鈕。
  12. 轉到命令行,並通過嘗試log4j簡短教程中的示例(如下所示)檢查一切是否正常:

    cd c:\\ Users \\ User \\ log4j
    javac MyApp2.java
    2012-03-30 21:32 510酒吧
    2012-03-30 21:24 177 Bar.java
    2012-03-30 21:26 334 MyApp2-log4j.properties
    2012-03-30 21:32 916 MyApp2.class
    2012-03-30 21:25 775 MyApp2.java
    java MyApp2 MyApp2-log4j.properties
    0 [main] INFO MyApp2-進入應用程序
    2 [main]調試欄-再次執行
    3 [main] INFO MyApp2-退出應用程序

上下文:准備使用某些* jar文件[1]的程序(問題源):

// 1.轉到您的源目錄(例如c:\\ Users \\ Hopbit \\ log4j)

// 2.在Bar類下面創建並另存為Bar.java

import org.apache.log4j.Logger;

public class Bar {
  static Logger logger = Logger.getLogger(Bar.class);
  public void doIt() {
    logger.debug("Did it again!");
  }
}

// 3.在MyApp2類下面創建並另存為MyApp2.java

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class MyApp2 {

  static Logger logger = Logger.getLogger(MyApp.class.getName());

  public static void main(String[] args) {

    // BasicConfigurator replaced with PropertyConfigurator.
    PropertyConfigurator.configure(args[0]);

    logger.info("Entering application.");
    Bar bar = new Bar();
    bar.doIt();
    logger.info("Exiting application.");
  }
}

// 4.創建並保存MyApp2-log4j.properties文件,其中包含以下代碼:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

// 5.嘗試編譯上面的示例,它應返回如下內容:

> c:\Users\Hopbit\log4j>javac MyApp2.java
> MyApp2.java:1: package org.apache.log4j does not exist
> import org.apache.log4j.Logger;
>                         ^
> // [...] SOME OTHER ERRORS HERE

鏈接與提示

[1] http://logging.apache.org/log4j/1.2/manual.html(“log4j簡介:CekiGŁlcŁ,2002年3月”)
[2] http://logging.apache.org/log4j/1.2/download.html
[3]上面的解決方案位於放置在uder log4j軟件包中的文件INSTALL中。

暫無
暫無

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

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