2011-08-21 37 views
2

我已經在我手上了以下方法:我該如何去將JAR文件複製到啓動目錄?

  • 的方法來獲得運行中的JAR文件的路徑。 (要複製的文件的路徑)。
  • 一種獲取當前操作系統的方法。 (Mac,Windows,Linux或未知)。

我該如何去寫一種方法來將JAR文件複製到基於計算機類型的啓動目錄?

+0

啓動目錄的定義是什麼? – CoolBeans

+0

計算機啓動時打開其內容的目錄。 – Confiqure

+2

不知何故,這個問題聽起來像是要求一種錯誤的方式來做到這一點。 –

回答

1

您可以將可執行文件放入啓動時運行的「啓動目錄」的概念對於Linux/UNIX而言沒有意義

在典型的Linux系統中,系統啓動時執行的任務由基於通常安裝在/etc/init.d中的shell腳本的init進程控制。 chkconfig程序在「運行級別」目錄中管理一系列鏈接,這些鏈接告訴init要爲每個系統運行級別運行什麼。

init.d腳本不只是任何舊腳本。

  • 他們必須服從一個特定的「協議」;即支持某些指揮選項。
  • 它們通常會有特別的註釋,告訴chkconfig程序何時應該運行腳本;即在什麼水平上,以什麼順序。

我相信現代UNIX系統的工作方式大致相同,儘管我知道一些舊版本做了不同的處理。

更新於20012年:情況變得更糟。最近的Linux發行版正在用upstart腳本替代init.d腳本。嘆。


上述內容涉及系統啓動。用戶也沒有「啓動目錄」的一般概念。

我想,一個窗口管理器可能實現「啓動目錄」,但一個典型的Linux用戶可以自由選擇和配置窗口管理器,或根本不使用窗口管理器。

在用戶登錄時配置事件的正常方式是通過shell初始化腳本;例如~/.bashrc~/.bash_login等。對於安裝程序來說,修改這些文件是一個糟糕的想法,因爲在所有情況下都不可能完全正確地進行修改......考慮到可能在shell初始化腳本中執行的奇怪和美妙的事情。


但底線是,如果你正在編寫安裝程序來安裝許多平臺的軟件,你必須瞭解這些平臺。您需要掌握使用它們和(在某種程度上)管理它們的經驗,以及具體的「正確方法」來進行軟件安裝。顯然,你還沒有Linux/UNIX的這方面的知識。

沒有足夠的知識和足夠的測試編寫安裝程序是真的很危險。安裝程序必須在特權級別運行,這意味着如果出現問題,它可能會對目標系統造成嚴重損壞。

0

使用Apache Commons IO的FileUtils將文件(如果您有路徑和名稱)複製到任何地方,只要您有權在目標中寫入。

+0

我知道如何複製文件。我的問題是如何複製JAR文件並使其仍然可以運行,以及如何獲取以下操作系統上啓動目錄的文件路徑:Windows,Mac,Linux。 – Confiqure

+1

你能解釋一下你的用例好一點嗎?也許有更好的方式來完成你想要的,而不必處理複製? – lobster1234

+0

好的。我只想知道如何獲取Windows計算機,Mac和Linux的啓動目錄路徑。我所需要的只是一個方法,它將返回啓動目錄的文件路徑的字符串,並將包含一個if語句,這取決於操作系統返回不同的路徑。 – Confiqure

0

不知何故,這個問題聽起來像是要求一種錯誤的方式來做到這一點。你爲什麼不開始從那裏是罐子 - java -jar /path/to/the/jar.jarjava -cp /path/the/jar.jar mainpackage.MainClass

的Linux,啓動-DIR - 迪爾,在那裏你正常啓動,如果你打開一個shell - 是您$HOME,別名/home/$USER ,或者僅從當前目錄.$(pwd)$PWD

cp JARFILE $PWD 

因此,如果沒有人更改起始目錄,將罐子複製到當前目錄。 但是,如果您在桌面上放置啓動器,則可能會選擇$HOME/Desktop作爲啓動目錄。

在Linux上,沒有官方的startup-dir;沒有人使用這個表達。

我們在談論自動啓動?

如果你想在服務器上運行的程序,/etc/init.d可能是把你的程序在正確的地方,或更好的起點腳本程序,它會去/usr/local/.../opt//var,這取決於Linux的味道和用戶偏好。

如果你的程序需要X(使用awt/swing/swt),它會需要等待X上來,然後/etc/X11/Xsession.d將是把startscript的地方。

根據需要運行的資源,還需要進一步考慮。

如果它使用網絡資源,並且應採取措施(取決於網絡啓動或關閉,或powermanagement),還有不同的目錄可供查找。

根據Stephen C.,如果您對Linux沒有任何經驗,您應該向我們提供更多信息。你的程序做什麼?我們可以看到它嗎?它是OpenSource嗎?它使用哪種計算機資源?客戶端或服務器? GUI還是控制檯?由誰運行?

+0

好的。我真的不明白。你可以或任何人給我一些代碼,返回一個文件路徑的字符串到計算機的啓動目錄。 難道這很難問? – Confiqure

+0

我試圖解釋一下Linux使用**代替**啓動目錄;看到我的答案。 –

+0

@ JavaCoder-1337:從Stephen C的回答我明白,你說的是一個自動啓動目錄,對嗎?那我的帖子是無效的。 –

相關問題