如何使用外部jar执行java程序

如何使用外部jar执行java程序,java,jar,external,Java,Jar,External,我想用番石榴来运行我的程序。如果我用 编辑:编译调用的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/O

我想用番石榴来运行我的程序。如果我用

编辑:编译调用的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执行程序吗

你应该试试下面的方法

java -classpath myJar.jar my.package.Program

我想你想要的是:

java -cp myPackages/guava-13.0.jar:. MyScanner

注意,我在类路径“.”(当前目录)和guava路径中设置了两个值。您的问题是,您在指定主类
MyScanner
之后指定了classpath选项。在主类之后指定的选项是程序的参数,而不是java本身的参数。

因为类名称之后的任何内容

java MyScanner -whatever is --after
               ^         ^  ^ 
将是类中主方法的参数以及类名之前的所有内容

java --what -is -before MyScanner
     ^      ^   ^
将是jvm的参数-cp或-classpath必须是jvm参数,而不是程序的参数

它必须读出来

java -cp myPackages/guava-13.0.jar MyScanner 

可以显示jar文件的清单文件吗?它是否包含指向GuavaJAR文件的类路径语句?您是否尝试过使用“javamyscanner-cpGuava-13.0.jar”?非常感谢:-)这正是我运行程序所需要的。现在我没有发现更多的类未发现的问题。通常情况下,我们会接受帮助我们解决问题的答案。您可以通过单击您认为最能解决您的问题的答案旁边的复选框来完成此操作