简体   繁体   中英

Why isn't this Java jar working?

When I run the code below I get the following error.

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)

I've got these files in \\test directory = crimson.jar robosuite-api.jar and test.jar.

Here is the example they give to launch a robot?

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);
}
}
}

Why is this giving me that Unknown Source error?

 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());
            }
        }


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

You have to add the name of the class having main() method in META-INF/manifest file.

Here is the link with more information : http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html

Thanks.

Try

java -cp test.jar

include your other .jar files also

If you are using a manifest file make sure you have defined your main class. for eg

Main-Class: test.MyApp

Why is this giving me that Unknown Source error?

The "unknown source" messages are not an error. It is the JVM telling you that the code that you are executing was compiled without any debug information; eg with the -gLnone option. As a result, the source file names and line numbers that would normally be included in the stacktrace are not available.

In this case, the code is some platform specific stuff that is internal to the JVM. Don't worry about it ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM