Wykonywanie pliku jar plikiem .bat

0

Witam,
Mam problem. Mam plik jar:

package dodawanie;

import java.util.Scanner;

public class Dodawanie {

    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        System.out.print("Podaj pierwszą liczbę: ");
        int a = odczyt.nextInt();
        System.out.print("Podaj drugą liczbę: ");
        int b = odczyt.nextInt();
        int wynik = a + b;
        System.out.println("Wynik = " + wynik);
    }
}

Do którego tworze plik wsadowy .bat. Zawartość pliku .bat:

E:
java -jar Dodawanie.jar 
pause

Chciałbym przekazać konsoli od razu gotowe argumenty 12 i 3 w pliku .bat aby nic nie wpisywać i żeby otrzymać sam wynik w konsoli bez ich ręcznego wpisywania.

0

I co to ma wspólnego z javą? o_O

E:
java -jar Dodawanie.jar %*
pause

Bo rozumiem że pytasz jak przekazać w .bat parametry wywołania tego bata do innej komendy. Z czymś takim możesz zrobić:
dupa.bat 1 2

0

Mam po prostu plik .jar nie napisany przeze mnie i trzeba w niego wpisywać dużo komend takich samych i chciałem to zautomatyzować plikiem .bat. To rozwiązanie które napisałeś nie działa :( Proszę o dalszą pomoc.

0

Zdefiniuj "nie działa". Pokaż łaskawie co zrobiłeś, jak tego używasz i jakie są efekty.
Może ty po prostu chciałeś tam dać w bacie java -jar Dodawanie.jar 1 2 ?

0

Może w ten sposób?

>type run.bat
echo %1 %2|java -jar Dodawanie.jar
>run 666 1
>echo 666 1  | java -jar Dodawanie.jar
Podaj pierwsza liczbe: Podaj druga liczbe: Wynik = 667

0
reptile333 napisał(a):

Może w ten sposób?

>type run.bat
echo %1 %2|java -jar Dodawanie.jar
>run 666 1
>echo 666 1  | java -jar Dodawanie.jar
Podaj pierwsza liczbe: Podaj druga liczbe: Wynik = 667

Tak reptile333 o to chodzi :) tylko nie wiem jak to wykonać napisz mi proszę. Mam to zapisać w pliku .bat ? Bo jak wrzuciłem do .bat to mi wyskakuje:
Podaj pierwszą liczbę: Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at dodawanie.Dodawanie.main(Dodawanie.java:10)

0

Chyba łatwiej byłoby to zrobić po prostu poprzez String[] args w metodzie main.
Możesz zrobić coś w stylu:

public static void main(String[] args) {
	if (args.length == 0) {
		Scanner odczyt = new Scanner(System.in);
		System.out.print("Podaj pierwszą liczbę: ");
		int a = odczyt.nextInt();
		System.out.print("Podaj drugą liczbę: ");
		int b = odczyt.nextInt();
		int wynik = a + b;
		System.out.println("Wynik = " + wynik);
	} else {
		int a = Integer.parseInt(args[0]);
		int b = Integer.parseInt(args[1]);
		int wynik = a + b;
		System.out.println("Wynik = " + wynik);
	}
}

Kod pisany na kolanie bez sprawdzenia, oczywiście to wszystko powinno znaleźć się w metodach, itp. chodzi mi o zamysł.

Wtedy albo podajesz tak jak pokazał @Shalom (po spakowaniu do jara):

java -jar Dodawanie.jar 1 2

(Możesz wtedy wrzucić do pliku .bat linijkę powyżej i mieć pewność, że zadziała)
Możesz wtedy również odpalać normalnie i wtedy program prosi Cię o podanie danych.
Zerknij sobie tutaj na link do Oraclowego szybkiego tutoriala

0

Dzięki @Burdzi0 Twoje rozwiązanie działa :) Ale czy jest jakaś szansa, że jeśli ktoś nie zadba o kod to czy można go odpalić jeśli kod jest taki:

package dodawanie;

import java.util.Scanner;

public class Dodawanie {

    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        System.out.print("Podaj pierwszą liczbę: ");
        int a = odczyt.nextInt();
        System.out.print("Podaj drugą liczbę: ");
        int b = odczyt.nextInt();
        int wynik = a + b;
        System.out.println("Wynik = " + wynik);
    }
}

Tak jak pisałem wcześniej zależy mi na tym bo ten .jar nie jest napisany przeze mnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1