Почему этот Java-кувшин не работает? - PullRequest
0 голосов
/ 02 января 2012

Когда я запускаю код ниже, я получаю следующую ошибку.

C:\Documents and Settings\BOS\Desktop\test>java -jar test.jar
Exception in thread "main" java.lang.NullPointerException
        at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

У меня есть эти файлы в \ test directory = crimson.jar robosuite-api.jar и test.jar.

Вот пример, который они дают для запуска робота?

import com.kapowtech.robosuite.api.java.rql.*;
public class SimpleRunRobot {
public static void main(String[] args) {
if (args.length < 1) {
System.out.println("Usage: RunRobot <robotURL>");
System.exit(1);
}
try {
// Run the robot
RQLResult result =
RobotExecutor.getRobotExecutor().execute(args[0]);
// Output the results
System.out.println(result);
}
catch (RQLException e) {
System.out.println("An error occurred: " + e);
}
}
}

Почему это дает мне ту неизвестную ошибку источника?

 package robosuite.robots;

    import com.kapowtech.robosuite.api.java.rql.RQLException;
    import com.kapowtech.robosuite.api.java.rql.RQLResult;
    import com.kapowtech.robosuite.api.java.rql.RobotExecutor;
    import com.kapowtech.robosuite.api.java.rql.construct.RQLObjects;


    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;



       /**
         * 
         * <p>
         * This is an autogenerated class. It has been generated from the
         * <code>library:/test.robot</code> file.
         *
         * @author RoboSuite
         */
    public class Test {

        // ----------------------------------------------------------------------
        // Class fields
        // ----------------------------------------------------------------------

        private static final String ROBOT_URL = "library:/test.robot";
        private static final RobotExecutor ROBOT_EXECUTOR = RobotExecutor.getRobotExecutor(SingletonRQLEngine.getInstance());
        private static final Converter CONVERTER = Converter.getInstance();



  // ----------------------------------------------------------------------
    // Constructors
    // ----------------------------------------------------------------------

    /**
     * Creates a new Test instance that can be used to execute the
     * <code>library:/test.robot</code>.
     */
        public Test() {
        }

        // ----------------------------------------------------------------------
        // Instance methods
        // ----------------------------------------------------------------------

        /**
         * Executes this robot.
         * 
         * @param test an input object to the robot. 
         * @return an array of output objects.
         * @throws java.io.IOException if the execution fails for some reason.
         */
        public Testst[] run(Test0 test) throws java.io.IOException {
            try {
                // Prepare input objects
                List parameters = new ArrayList();
                parameters.add(test);

                RQLObjects inputObjects = CONVERTER.convertBeansToRQLObjects(parameters);

                // Run robot
                RQLResult rqlResult = ROBOT_EXECUTOR.execute(ROBOT_URL, inputObjects);

                // Extract output objects
                RQLObjects outputObjects = rqlResult.getOutputObjects();
                List result = CONVERTER.convertRQLObjectsToBeans(outputObjects);
                return (Testst[]) result.toArray(new Testst[result.size()]);
            } catch (RQLException e) {
                throw new IOException(e.toString());
            }
        }


        /* ------------------------------------------------------------------- */
    }

Ответы [ 4 ]

1 голос
/ 02 января 2012

Если вы используете Java 7, прочтите это.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7067922

0 голосов
/ 02 января 2012

Почему это вызывает ошибку «Неизвестный источник»?

Сообщения «неизвестный источник» не являются ошибкой.Это JVM говорит вам, что код, который вы выполняете, был скомпилирован без какой-либо отладочной информации;например, с опцией -gLnone.В результате имена исходных файлов и номера строк, которые обычно включаются в трассировку стека, недоступны.

В этом случае код представляет собой некоторые специфичные для платформы компоненты, которые являются внутренними для JVM.Не беспокойся об этом ...

0 голосов
/ 02 января 2012

Попробуйте

java -cp test.jar

также включает другие файлы .jar

Если вы используете файл манифеста, убедитесь, что вы определили свой основной класс. например,

Main-Class: test.MyApp
0 голосов
/ 02 января 2012

Вы должны добавить имя класса, имеющего метод main () в файле META-INF / manifest.

Вот ссылка с дополнительной информацией: http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html

Спасибо.

...