2009-12-27 36 views
8

Tôi có tệp thực thi JAR. Và tôi đã có một tập lệnh xây dựng Ant để biên dịch và sau đó tạo tệp JAR này. Tôi cũng muốn một tác vụ để chạy tệp JAR, nhưng tôi có một đối số dòng lệnh cần được truyền cho JAR. Đó là một tệp cấu hình. Mục tiêu chạy dướiChuyển đối số dòng lệnh tới JAR trong tập lệnh Ant

<target name="run"> 
    <java jar="build/jar/ShoutGen.jar" fork="true"/> 
    <arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/> 
</target> 

Khi tôi cố gắng làm điều này và chạy nó từ bên trong Eclipse tôi nhận được

Buildfile: /home/munderwo/workspace/ShoutGen-Java/build.xml 
run: 
    [java] No config file passed as an argument. Please pass a configuration file 
    [java] Java Result: 16 

BUILD FAILED 
/home/munderwo/workspace/ShoutGen-Java/build.xml:24: Problem: failed to create task or type arg 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 

Sản lượng lỗi từ Java được lỗi mã của tôi có nghĩa là "bạn đã không vượt qua một tập tin cấu hình như một đối số "mà sao lưu lỗi kiến ​​của" Vấn đề: thất bại trong việc tạo ra nhiệm vụ hoặc loại arg ".

Vậy làm cách nào để chuyển đối số cho tệp JAR được thực thi từ bên trong Ant? Đây có phải là điều bạn không nên làm?

Trả lời

16

Thẻ <arg> phải là con của thẻ <java>. Như thế này:

<target name="run"> 
    <java jar="build/jar/ShoutGen.jar" fork="true"> 
     <arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/> 
    </java> 
</target> 

Trong câu hỏi của bạn <arg> là anh chị em ruột của <java> và dòng tranh luận không bao giờ truyền cho lệnh java.

6

Tuyên bố arg của bạn không được lồng ghép đúng cách trong tác vụ java. Nó cần phải được

<java jar="..."> 
    <arg line="..." /> 
</java> 
-2

Bạn có thể làm điều đó với một cái gì đó như thế này, vì vậy nếu không có đối số được quy định nó sẽ tiếp tục không:

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

    } 
} 
+0

Không để đánh bại một con ngựa đã chết, nhưng tôi không thấy cách giải quyết vấn đề này. – Dumpcats

Các vấn đề liên quan