2010-08-22 118 views
4

我使用32位java庫導出try.jar文件。在客戶端網站上,我有64位的Java庫。可以try.jar行爲64位可執行文件?可以使用64位Java庫執行32位導出的jar文件嗎?

例如,我有

Runtime rt = Runtime.getRuntime(); 
s = rt.exec("someExecutable"); 

的someExecutable二進制是在64位,並使用這個碼具有32位Java庫似乎不工作。 我對這個問題的解決方法是使用32位java庫(因爲我的環境是32位)導出try.jar並使用客戶端站點中的64位庫運行try.jar。 此方法是否正確或有其他建議?

當我運行someExecutable直接(沒有涉及Java)客戶端網站上的64位它工作正常(客戶端站點也是64位。)。 但是當我使用s = rt.exec(「someExecutable」);它不起作用。 java庫(通過java.sun.com下載的jre可執行文件)現在在客戶端和開發站點都是32位。 如果我安裝64位庫到客戶端網站但不在開發網站上,解決我的問題嗎?

+1

你得到了什麼確切的錯誤? – clamp 2010-08-22 09:31:13

+0

當我運行一些64位的客戶端網站時,我可以正常工作(客戶端站點也是64位)。 但是當我使用s = rt.exec(「someExecutable」);它不起作用。 java庫(通過java.sun.com下載的jre可執行文件)現在在客戶端和開發站點都是32位。 如果我安裝64位庫到客戶端網站但不在開發網站上,解決我的問題嗎? – ogzylz 2010-08-22 09:41:50

回答

2

您將需要一個someExecutable二進制文件在您希望運行程序的操作系統體系結構上可用。

這實際上與Java沒有任何關係 - 所有Java正在執行的操作是轉到底層操作系統並嘗試在傳遞到Runtime.exec()的字符串中運行該命令。

+0

但是當我在終端中運行一些可執行文件時,它工作正常。但使用Runtime.exec(「someExecutable」)不工作? 我認爲問題是,java庫32位&someExecutable是64位??我可能是錯誤的.. – ogzylz 2010-08-22 09:53:49

+0

32位和64位不應該是一個問題在這裏...我想你是混淆這個思路的問題。你可以顯示你的錯誤或堆棧跟蹤或類似的東西? – 2010-08-22 09:56:52

+0

輸入流沒有提供任何內容。\ n someExecutable is drecog -i ...(一些其他參數)\ n 錯誤流給出了drecog手冊\ n 當終端中的「./drecog」它也給出了drecog手冊 – ogzylz 2010-08-22 10:01:04

0

如果你使用100%的java代碼,你會得到什麼問題?如果你使用100%的java代碼,JRE應該透露所有其他的東西。

4

Java librairies在這裏不是問題。如果你想exec someExecutable,這個程序必須在32位的32位環境。

Java庫不是32位或64位,它們都是Java ByteCode。所以它們可以以完全相同的方式在任何JVM 64或32上執行。

+0

您可以從32個Java環境(假設操作系統支持64位)啓動64位程序。除了字節碼外,Java庫還可能包含本機代碼。 – 2010-08-22 09:42:48

+0

我想到了這一點,但在這種情況下,並與此問題,我嚴重懷疑問題駐留在本機代碼。 – 2010-08-22 09:44:52

+0

我解決了這個問題。這與32/64位問題無關,對於混淆感到抱歉。從32個Java環境啓動64位程序是很好的。問題是Runtime.exec(「drecog -i ...> rec.log」); 「> rec.log」導致了這個問題。當我刪除那部分它工作得很好。我不知道爲什麼「> rec.log」部分導致問題。 – ogzylz 2010-08-22 10:26:51

相關問題