有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java运行jar,带有批处理文件中的多个参数

下面是一个批处理文件的片段,我试图在其中运行myProgram.jar

set /p _count="enter count: "
set /p _toc="enter TOC"

choice /N /C:TO /M "Select Type(T/O): "
if errorlevel ==1 set _type=T
if errorlevel ==2 set _type=O

choice /N /C:SF /M "Select status(S/F): "
if errorlevel ==1 set _status=T
if errorlevel ==2 set _status=O

java -jar dir/myProgram.jar %_count% %_type% %_status% %_toc%

批处理文件执行带有四个参数的java -jar命令,即_count_type_status_toc

在java中,我只得到_count_toc的值

问题是剩下的两个参数被作为null值传递,因此每次运行程序时我都要面对NullPointerException


共 (1) 个答案

  1. # 1 楼答案

    tl;博士

    你的错误无法重现,我很确定这会导致一个简单的印刷错误,或者在你的Java应用程序中,你没有向我们展示


    为了重现你的行为,我做了以下几点:

    一,。创建一个简单的Java应用程序,将args写入控制台:

    import java.util.Arrays;
    
    class App {
        public static void main(String[] args) {
            Arrays.stream(args).forEach(System.out::println);
        }
    }
    

    二,。在Windows 10上使用jdk1.8.0_91编译它

    javac .\App.java
    jar cvfe App.jar App *.class
    

    三,。执行测试。用上面的代码击球:(只针对你编辑问题的情况)

    set /p _count="enter count: "
    set /p _toc="enter TOC"
    
    choice /N /C:TO /M "Select Type(T/O): "
    if errorlevel ==1 set _type=T
    if errorlevel ==2 set _type=O
    
    choice /N /C:SF /M "Select status(S/F): "
    if errorlevel ==1 set _status=T
    if errorlevel ==2 set _status=O
    
    java -jar App.jar %_count% %_type% %_status% %_toc%
    

    通过输入:5, 6, T, F它给出了以下输出:

    5
    T
    O
    6

    这意味着-IMHO-你的错误在于你的java代码获取args,这个NullPointerException是由System.Console()而不是args[n]抛出的,或者你发布的批处理代码并不是在你的计算机上执行的

    总而言之:如果批处理使用4个参数调用命令行(就像示例代码那样),args有4个参数