错误无法找到或加载主类-jar

时间:2016-09-01 07:51:17

标签: java processbuilder

我正在开发一个java UNO项目,操作系统:Ubuntu 14.我通过传递命令调用exec来运行带有该jar文件的一些子命令的jar文件。

String finalOutputMSG = "";

  String[] cmd = {JAVA_LOCATION, " -jar ", JAR_LOCATION, " " + inputFile, " -dir ", ".isc", " -out xml"};//java location provides java location, jar location provides jar location, inputfile contains input file's location -dir provides output directory with name .isc, -out is output file with file format for output is xml

类似命令正常运行而没有显示任何错误,但在我尝试导入文件并将其转换为另一种格式(例如.xlsx到.xml)的情况下,给出了错误。在它有效的命令中,我已经从输入文件中生成了输出。

     finalOutputMSG = exec(cmd);

     /**
     * exec() is executed and outputs are displayed
     *
     * @param String[] command passed to jar
     * @return output message containing outputs or output message
     */      
      private static String exec(String[] cmd) {

            String outputMSG = "";

        Process proc = null;
        try {
            ProcessBuilder pb = new ProcessBuilder(cmd);
            pb.redirectErrorStream(true);//any error output generated by subprocesses merged with the standard output,
            //read using the Process.getInputStream()
///* Start the process */
            proc = pb.start();
            if (debug) {
                System.out.println("Process started !");
            }

            outputMSG = getOutput(proc);
            if (debug) {
                System.out.println("outputMSG " + outputMSG);
            }
        } catch (IOException e) {
            if (debug) {
                System.out.println("Exception in exec " + e.getMessage());
                JOptionPane.showMessageDialog(null, "Exception in exec ");
            }
//            StringBuilder append = appendToFile.append("Exception in exec ").append(e.getMessage());

        } catch (Exception e) {
            if (debug) {
                System.out.println("Exception in exec " + e.getMessage());
                JOptionPane.showMessageDialog(null, "Exception in exec ");
            }
        } finally {
            ///* Clean-up */
            proc.destroy();
            if (debug) {
                System.out.println("Process ended !");
            }
        }
        return outputMSG;
    }
    /**
     * Reads output from current process
     *
     * @param current process
     * @return output read in current process
     */
    private static String getOutput(Process p) {
        StringBuilder outStream = new StringBuilder();
        if (debug) {
            System.out.println("StringBuilder initialized in getOutput");
        }
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
            if (debug) {
                System.out.println("BufferedReader initialized in getOutput");
            }
            String line = null;
            if (debug) {
                System.out.println("in.readLine() in getOutput abt to be read");
            }

            while ((line = in.readLine()) != null) {
                outStream.append(line);
                if (debug) {
                    System.out.println("line in getOutput " + line);
                    System.out.println("outStream in getOutput " + outStream);
                }
                outStream.append("\n");
            }
        } catch (IOException e) {
            if (debug1) {
                System.out.println("IOException in getOutputs " + e.getMessage());
            }

        } catch (Exception ex) {
            if (debug1) {
                System.out.println("Exception in getOutputs" + ex.getMessage());
            }
        }
        return outStream.toString();
    }

Netbeans描述的错误消息 错误:无法找到或加载主类-jar

我已经搜索了这个问题,但找不到任何有用的帮助,我无法理解,缺少什么。

1 个答案:

答案 0 :(得分:0)

解决方案:

String[] cmd = {JAVA_LOCATION, " -jar ", JAR_LOCATION, " " + inputFile, " -dir ", ".isc", " -out xml"};

我替换了在控制台中打印的值,然后运行命令以便在终端上运行,它运行正常。 解决方案:要使用的命令必须在末尾没有任何空格。因为linux中的终端解释了像“ls”这样的命令,但是在java /任何编程语言中,它都不解释ls,所以在以下参数的情况下cmdarray

public Process exec(String[] cmdarray)
             throws IOException

按原样执行命令。

String[] cmd = {JAVA_LOCATION, "-jar", JAR_LOCATION, inputFile, "-dir",  ".isc", "-out", "xml"};