2010-01-23 110 views
2

好的。所以這是我的問題:我正在Clojure中製作一個數據解析器。我的程序的一部分是它必須能夠繪製數據圖。我想,我會用jFreeChart。不過,我絕對沒有IDEA如何將東西包含在JAR文件中。我的意思是:如果我在我的類路徑中app.jar文件,我似乎並沒有能夠做到:如何將java文件包含在.jar文件中?

進口app.thing.thing2

不改變classpath中是內部的jar文件。

這裏的想法是,我不認爲我可以改變我的類路徑,因爲我需要設置它來運行Clojure(或者我?)。全局類路徑目前是/ usr/share/java。

請不要問我使用Maven,Ant或任何項目構建工具,除非它是唯一的方法來做到這一點。這是一個供個人使用的腳本,它不需要或不需要很多開銷。

不知我是否應該解壓每個JAR文件,以便我可以引用目錄結構?這不好嗎?

讓我知道你是否需要任何澄清!

+0

JAR文件是否適用於編譯/運行Java代碼?也許問題在於JAR本身,因爲它並不打算直接添加到類路徑中(這可能是IMO的錯誤)。如果你讓我們知道你用來運行或編譯代碼的命令/工具,我們可能會更有幫助。 – Grundlefleck 2010-01-23 01:34:00

回答

5

(Java)CLASSPATH環境變量的內容可用於Clojure,因此如果您在運行Clojure之前將您的jar添加到全局類路徑中,您將會「看到」它:

export CLASSPATH=/path/to/jfreechart.jar:$CLASSPATH 

但是,在我看來,這是不是「乾淨」的方式來增加廣口瓶中,Clojure的類路徑(因爲這使得以任何 Java程序可見的圖書館,可能不期望)。相反,你應該使用CLOJURE_EXT環境變量。這是這個變量是如何記載:

# CLOJURE_EXT The path to a directory containing (either directly or as 
# symbolic links) jar files and/or directories whose paths 
# should be in Clojure's classpath. The value of the 
# CLASSPATH environment variable for Clojure will be a list 
# of these paths followed by the previous value of CLASSPATH 
# (if any). 

在我的系統,它的定義如下:

export CLOJURE_EXT=~/.clojure 

所以,jfreechart.jar(或任何其他庫)添加到Clojures的類路徑,複製它在CLOJURE_EXT變量中定義的目錄中(或添加指向它的符號鏈接)。

順便說(我很抱歉,但你的問題是不是清楚了),如果你想要一些Java類捆綁成一個罐子,該命令是類似的東西:

$ jar cf myjarfile *.class 

你」將找到jar的文檔 - Java歸檔工具 - here

+0

這個答案正是我一直在尋找的。 我確實有時無法制定明確的問題。非常感謝! – Luke 2010-01-23 04:43:31

0

不知道clojure是如何運行的,但是不要將jar文件添加到類路徑中?

/usr/share/java:/home/user/myjarfile.jar 
1

如果你要基本可以內嵌類路徑,包括您的罐子的硬編碼的位置,所以如果你在Windows上它看起來像

java -cp .;%CLASSPATH%;C:/here/it/is/foo.jar com.foo.MyClass

+0

除非問題是關於Clojure,如果我沒有錯,所以這對OP沒有幫助。 – 2010-01-23 02:07:22

+0

是的 - 我正在閱讀帕斯卡爾的回答,我認爲他釘了它 – Bostone 2010-01-23 02:36:29

2

我完全尊重你的願望,不要使用項目管理工具,儘管我只是花了更長的時間輸入這個句子,而不是設置leiningen。對於你的一次性腳本來說,任何工具都會變得過分,Pascal Thivent的回答很好。對於閱讀這個問題的人來說,他們可能想要生成一個jar文件,或者輕鬆地將他們的Clojure加載到emacs/slime-swank中,我不能太強烈地推薦leiningen。

相關問題