ฉันจะส่งพารามิเตอร์ไปยังไฟล์ jar ในขณะดำเนินการได้อย่างไร


101

ฉันจะส่งพารามิเตอร์ไปยังไฟล์ JAR ได้อย่างไรในขณะดำเนินการ

คำตอบ:


146

ในการส่งอาร์กิวเมนต์ไปยังโถ:

java -jar myjar.jar one two

คุณสามารถเข้าถึงได้ในเมธอด main () ของ "Main-Class" (กล่าวถึงในmanifest.mfไฟล์ของ JAR)

String one = args[0];  
String two = args[1];  

40

เอกสาร JAVA กล่าวว่า :

java [ตัวเลือก] -jar file.jar [อาร์กิวเมนต์ ... ]

และ

... อาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกหลังจากชื่อคลาสหรือชื่อไฟล์ JAR จะถูกส่งไปยังฟังก์ชันหลัก ...

บางทีคุณอาจต้องใส่อาร์กิวเมนต์ไว้ในเครื่องหมายคำพูดเดี่ยว


7
ลิงค์นี้ตายแล้ว
bfontaine

1
นี่คือการใช้งานที่แสดงการเชื่อมโยงการทำงานของยูทิลิตี้ขวดของ Java - docs.oracle.com/javase/tutorial/deployment/jar ไชโย!
realPK

15

คุณสามารถทำได้ด้วยสิ่งนี้ดังนั้นหากไม่มีการระบุอาร์กิวเมนต์ก็จะดำเนินต่อไป:

public static void main(String[] args) {
    try {
        String one = args[0];
        String two = args[1];
    }
    catch (ArrayIndexOutOfBoundsException e){
        System.out.println("ArrayIndexOutOfBoundsException caught");
    }
    finally {

    }
}

จากนั้นเปิดแอปพลิเคชัน:

java -jar myapp.jar arg1 arg2

21
คุณไม่ควรใช้ข้อยกเว้นเพื่อคัดท้ายโค้ดของคุณ แต่คุณควรตรวจสอบความยาวของอาร์เรย์ก่อนที่จะเข้าถึง!
chuck258

1
ถ้าโปรแกรมต้องมีพารามิเตอร์อย่างน้อยหนึ่งพารามิเตอร์เสมอการไม่มี IMHO ถือเป็นกรณีที่ถูกต้องสำหรับการใช้ข้อยกเว้น
MikeW

6
java [ options ] -jar file.jar [ argument ... ]

หากคุณต้องการส่งผ่านไฟล์คุณสมบัติ log4j ให้ใช้ตัวเลือกด้านล่าง

-Dlog4j.configurationFile=directory/file.xml


java -Dlog4j.configurationFile=directory/file.xml -jar <JAR FILE> [arguments ...]

0

อาร์กิวเมนต์ Incase มีช่องว่างคุณสามารถส่งผ่านได้ดังที่แสดงด้านล่าง

java -jar myjar.jar 'first argument' 'second argument'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.