如何从Eclipse编译的命令行运行Java类文件?外部Jar问题

如何从Eclipse编译的命令行运行Java类文件?外部Jar问题,java,eclipse,command-line,Java,Eclipse,Command Line,我有一个在Eclipse中运行良好的项目。该项目使用许多外部jar。 项目的“我的文件”目录有一个bin和src目录,以及一个.classpath和.project文件 从该目录,如果我执行: java -cp bin com.brm.main.Demo2 我收到以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/sea rch/Query at java.lang

我有一个在Eclipse中运行良好的项目。该项目使用许多外部jar。 项目的“我的文件”目录有一个
bin
src
目录,以及一个
.classpath
.project
文件

从该目录,如果我执行:

java -cp bin com.brm.main.Demo2    
我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/sea
rch/Query
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getMethod0(Class.java:2685)
    at java.lang.Class.getMethod(Class.java:1620)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)

Caused by: java.lang.ClassNotFoundException: org.apache.lucene.search.Query
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 6 more

org/apache/lucene是一个外部jar。

这样试试怎么样:-

java -cp .;%CLASSPATH% com.brm.main.Demo2

您的类路径似乎无效,因此找不到外部库的.jar。

您还需要在类路径上包含其他依赖项,用
分隔类路径元素或Linux上的

在Windows上:

java -cp bin;path\to\lucene.jar com.brm.main.Demo2
在Linux上:

java -cp bin:path/to/lucene.jar com.brm.main.Demo2
如果除了lucene和bin之外还有其他jar文件或目录,那么也必须添加它们


如果您试图部署您的程序,更好的解决方案是使用Eclipse的“导出”向导导出可运行的JAR文件,它将引导您完成选择主类和绑定依赖项的步骤。或者,更进一步,您可以使用ant或maven构建项目并创建可部署的捆绑包。

您的类路径无效,因此无法找到外部库的.jar。当我在同一目录中执行此操作时,我收到以下错误:
错误:无法找到或加载主类文件
。即使我将bin包含在类路径中?@MatthewMoisen:-您可以尝试使用简单的java-cp吗。通过使用指定完全限定类name@MatthewMoisen:-或者最好这样尝试:java-cp-bin;路径\to\lucene.jar com.brm.main.Demo2