2008-12-29 49 views
1

我在NetBeans中创建了一个新的J2SE项目,并且可以从IDE运行它,但是当我尝试在命令行上使用Ant运行它时,出现以下问题:命令行中的NoClassDefFoundError与新的NetBeans项目

<剪断>

run: 
    [java] Exception in thread "main" java.lang.NoClassDefFoundError: IndexBuilder 
    [java] Java Result: 1 

<剪断>

基于从下面project.properties的片段中,类应该可以找到。

run.classpath=\ 
    ${javac.classpath}:\ 
    ${build.classes.dir} 

我该如何解决这个问题?

回答

0

当您从命令行运行它时,实际上是调用Apache Ant。您得到ClassNotFound异常的原因是因为$ {javac.classpath}和所有其他属性没有正确填充。这就是为什么你的代码在Netbeans上下文中运行。 Netbeans正在为你设置这些属性。

要回答你原来的你如何去得到它在命令行中运行的问题,你需要或者设置一个通过属性声明定义的参数属性文件:

<property file="myproject.properties"/> 

另一个解决方案是通过sh脚本将属性设置为环境变量。或者,您可以在构建脚本中使用实际路径而不是属性。

有关如何从命令行调用Ant的更多详细信息,请参见here

0

您是否尝试在工程属性 - >运行选项卡中将工作目录设置为“build \ classes”?

0

您的项目引用的至少一个JAR/Lib可能不会被复制到程序的类路径。将项目使用的所有jar/lib文件复制到项目的/ dist文件夹(或任何YourApplication.jar所在的位置),然后尝试运行程序。如果这解决了它,这意味着您的Netbeans项目配置不正确。

1

你得到的错误是指下列条件之一为真:

  • IndexBuilder无法在类路径中
  • IndexBuilder一个必要(类加载)的依赖性无法找到在classpath

也就是说,加载类时,有可能(甚至很有可能)阶级可以发现但一些关键的依赖该类无法找到。例如,如果IndexBuilder扩展了另一个类,并且在类路径中找不到该基类,则会出现此错误。另一个例子是如果IndexBuilder在静态初始化器中使用一个类,并且找不到该类。

请检查您的班级路径,不仅仅是为IndexBuilder,而且也为IndexBuilder依赖的任何事情。

例如参见this discussionNoClassDefFoundError

0

你是在Windows还是Unix上运行它。如果是Windows,请尝试将您的属性文件更改为:

 

run.classpath=${javac.classpath};${build.classes.dir} 
 

请注意用分号代替冒号。

+0

这是在Mac OSX上,所以Unix。 – 2009-03-04 19:40:52

相关问题