2013-07-06 3 views
2

Я хочу, чтобы запустить программу, используя следующие командыКак запустить файл jar изнутри класса?

java Main -host arg1 arg2 

Однако я столкнулась с какой-то troble как я сделал проект в отдельных упаковках. Таким образом, я получаю файл jar и не могу запустить основную часть из указанных выше ключевых слов. Поэтому я должен вызвать файл jar из командной строки.

java -jar Main.jar arg1 arg2 

Однако я не хочу, чтобы это противоречило моей спецификации.

Вы можете мне помочь?

ХАРАКТЕРИСТИКИ

только текстовые приложения это все, что требуется. Она должна быть объединена в сети и работать в качестве либо хоста (сервер) или клиента из командной строки с помощью команды:

java BankApp -host PORT 
java BankApp -client MACHINE PORT 

, чтобы начать, как хост или клиент соответственно. Например, если вы знаете, что хост работает на Алохе в порту 8888 вы соединяетесь с:

java BankApp -client aloha 8888 

, что мне нужно сделать, чтобы работать следующим образом.

java -jar C:\Users\UniversityofBristol\Desktop\BankApp\BankApp\dist BankApp.jar arg1 arg2 

общественного класса BankApp {

public static void main(String[] args) throws IOException, ClassNotFoundException { 


    String current = new java.io.File(".").getCanonicalPath(); 
    current = "java -jar " + current + "\\dist"; 
    current = "\"" + current + "\""; 
    current = current + " BankApp.jar"; 
    System.out.println("Current dir:" + current); 

    // Run a java app in a separate system process 
    Process proc = Runtime.getRuntime().exec(current); 
    // Then retreive the process output 
    InputStream in = proc.getInputStream(); 
    InputStream err = proc.getErrorStream(); 

} 

}

+1

Если бы я знал о вашей спецификации, я мог бы помочь! –

+0

Привет, я просто загрузил спецификацию! –

+0

@AdityaSaxena - посмотрите на [ProcessBuilder] (http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html), javaDoc имеет хороший пример того, как начать процессы. Обратите внимание, что исполняемый файл и все аргументы находятся в отдельных строках! –

ответ

0

Просто поставить банку на пути к классам. Вы могли бы сломать спецификации немного, говоря:

java -cp bankapp.jar BankApp arg1 arg2 

или установить переменную $ CLASSPATH среды (что это некрасиво, и я никогда не делать это за пределами сценариев, но он работает):

export CLASSPATH=path/to/your/jar 
java BankApp arg1 arg2 

Спойлер

+0

Спасибо! Но я должен добавить никаких дополнительных аргументов. Я попытался создать фиктивный класс BankApp и попытался вызвать из него jarfile. –

+0

-cp bankapp.jar не допускается. Я это видел. Он должен быть java BankApp -host arg1 arg2 ... –

+0

Затем используйте второй подход (определите переменную CLASSPATH).Ваша спецификация действительно *, что * строго, что вам не разрешено добавлять опции java vm? –

1

См. this answer, если вы хотите запустить .jar в отдельном процессе.

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

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