我想用番石榴运行我的程序。如果我用
编译我的程序编辑:java - >用于编译调用的javac
javac -cp myPackages/guava-13.0.jar MyScanner.java
没有问题。
如果我尝试运行
java MyScanner -cp myPackages/guava-13.0.jar
我在控制台上输出了这个输出:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Optional
at MyScanner.main(MyScanner.java:37)
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Optional
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 1 more
你能告诉我如何使用外部jar执行程序吗?
答案 0 :(得分:5)
我认为你想要的是:
java -cp myPackages/guava-13.0.jar:. MyScanner
注意我在类路径中设置了两个值,'。' (当前目录)和番石榴的路径。您的问题是您指定了主要类MyScanner
后的类路径选项。在主类之后指定的选项是程序的参数,而不是java本身。
答案 1 :(得分:1)
你应该尝试下面的事情
java -classpath myJar.jar my.package.Program
答案 2 :(得分:1)
因为你的课程名称后面有任何内容
java MyScanner -whatever is --after
^ ^ ^
将是您班级中主要方法的参数以及类名之前的所有内容
java --what -is -before MyScanner
^ ^ ^
将是jvm的参数。 -cp或-classpath必须是jvm参数,而不是程序的参数。
必须阅读
java -cp myPackages/guava-13.0.jar MyScanner