2013-07-17 2 views
1

То, что я в основном пытаются сделать здесь, это запустить .jar файл, который находится подКак запустить .jar-файл из Java-программы?

C/Users/-any user here-/appdata/Roaming/-my folder here-/-file name here-.jar 

ли я каким-то образом открыть CMD и сделать:

cd appdata/Roaming/<Folder> 
java -jar <FileName>.jar 

Это похоже на работу, когда Я ввожу его в CMD. Кажется, я не могу заставить его работать при запуске из java-программы.

Я попытался сделать:

Runtime.getRuntime().exec("cd appdata/Roaming"); 

И я получаю ошибку, что указанный каталог не существует.

+1

Несколько советов. Прочитайте (и внесите) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html). Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –

+0

@AndrewThompson Это кажется мне ответом, а не просто комментарием. –

+0

@ViktorSeifert Если вопрос еще не был предложен (правильный) ответ, я мог бы представить его как один. Конечно, это может стать ответом на следующие несколько вопросов, заданных OP. ;) –

ответ

4

Используйте абсолютный путь вместо относительного пути, который должен препятствовать тому, чтобы путь не был найден, если вы запускаете из любого рабочего каталога. В противном случае добавьте его в свой путь класса, как сказал Низиль.

Чтобы получить имя текущего пользователя, используйте System.getProperty("user.name") и соединитесь на своем пути.

user = System.getProperty("user.name"); 
cmd = "java -jar C/Users/" + user + "/appdata/Roaming/<folder>/<file>.jar"; 
Runtime.getRuntime().exec(cmd); 
+0

Как узнать, что такое имя пользователя? – user2098268

+0

Согласование с переменной? Вы не можете использовать подстановочный знак для поиска пользователей, потому что тогда, как вы знаете, какого пользователя принимать, если есть несколько пользователей? – Leeward

+0

@ user2098268 См. Принятый ответ в http://stackoverflow.com/questions/797549/get-login-username-in-java, чтобы получить имя пользователя. –

3

Вы просто должны добавить путь jar в свой путь к классу (не забудьте использовать абсолютный путь) и вызвать метод jar в вашем коде main. Однако это решение зависит от пользователя, поскольку путь будет закодирован, если вы не захотите погрузиться в нечто более сложное (How do you change the classpath within java).

+0

Ow boy .. Вот почему я набрал то, что мне нужно. Я делаю программу Minecraft как запуска, которая запустит мою игру, которая находится в appdata/Roaming из любого места на компьютере. – user2098268

+0

Ну, если вы используете абсолютный путь, это будет. Но только на вашем компьютере, для вашего пользователя;) – NiziL

Смежные вопросы