2012-01-27 56 views
0

我的程序编译得很好。但是当我尝试运行它时,问题就开始了。给我一个接口java.lang.NoClassDefFoundError

[email protected]:~/dev/drools/sudoku$ java App 
Exception in thread "main" java.lang.NoClassDefFoundError: org/drools/planner/core/solution/Solution 
Caused by: java.lang.ClassNotFoundException: org.drools.planner.core.solution.Solution 
     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) 
Could not find the main class: App. Program will exit. 

我知道接口Solution在编译时正确解析。

这里是违规类Sudokuimplements Solution

package domain; 

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 
import java.util.List; 

import org.drools.planner.api.domain.solution.PlanningEntityCollectionProperty; 
import org.drools.planner.core.solution.Solution; 
import org.drools.planner.core.score.SimpleScore; 

public class Sudoku implements Solution<SimpleScore>{ 
... 

这里是应该使用Sudoku

的一个实例,它是我的结果App类错误地在SudokuSolution之间进行投射?

declare -x CLASSPATH=".:/home/jesvin/dev/drools/sudoku/binaries" 

回答

2

由于@GPRathour上面写的,你需要从Drools的规划师的罐子添加到类路径。

我猜/home/jesvin/dev/drools/sudoku/binaries是一个目录。你需要在那里放置罐子。 有些东西一样......

declare -x CLASSPATH=".:/home/jesvin/dev/drools/sudoku/binaries/drools-planner-core.jar

一个更好的办法将通过-classpath

java -classpath path/jar1;path/jar App

在命令行中添加罐子在异常堆栈,你应该经常检查“由'消息引起。在这你真正的例外是Caused by: java.lang.ClassNotFoundException: org.drools.planner.core.solution.Solution

(其它东西note--使用的包装。在适当的包装有类有助于很多读书迟代码。)

+0

对!我使用'dir/*'功能导入所有jar文件,如'declare -x CLASSPATH =“。:/ home/jesvin/dev/drools/sudoku/binaries/*”'。编译器的类路径被硬编码到一个自定义命令中,并且我不小心将环境变量留在了错误的位置。 – aitchnyu 2012-01-27 07:25:07

+0

你也是Keralite吗? – aitchnyu 2012-01-27 07:25:27

2

您需要添加org.drools.planner.core.solution.Solution类的外部Jar文件:如


我的类路径设置。

你可以得到它from here

+0

用户编译的应用程序,所以罐子已经下载:) – Jayan 2012-01-27 07:07:22

1

我会建议你使用内置工具,它可以照顾第三方的依赖。举一个例子,你可以简单地使用maven作为构建工具,在项目pom文件中,你可以声明你需要的所有依赖。以下是junit依赖的例子。

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.0</version> 
    <type>jar</type> 
    <scope>test</scope> 
    <optional>true</optional> 
</dependency> 
相关问题