给我java.lang.NoClassDefFoundError的接口
我的程序编译得很好。但是当我尝试运行它时,问题就开始了给我java.lang.NoClassDefFoundError的接口,java,linux,Java,Linux,我的程序编译得很好。但是当我尝试运行它时,问题就开始了 jesvin@Jesvin-Technovia:~/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.co
jesvin@Jesvin-Technovia:~/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.
我知道接口解决方案
在编译时已正确解析
下面是一个违规的类数独
,它实现了解决方案:
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>{
...
这是我错误地在数独
和解决方案
之间转换的结果吗
我的类路径设置为:
declare -x CLASSPATH=".:/home/jesvin/dev/drools/sudoku/binaries"
您需要添加类
org.drools.planner.core.solution.solution
的外部Jar文件
您可以得到它您需要添加类为org.drools.planner.core.solution.solution的外部Jar文件
您可以得到它正如@GPRathour在上面写的,您需要将drools planner中的jar添加到类路径中 我猜
/home/jesvin/dev/drools/sudoku/binaries
是一个目录。你需要把罐子放在那里。
比如说
declare-x CLASSPATH=“.:/home/jesvin/dev/drools/sudoku/binaries/drools planner core.jar
更好的方法是通过-classpath在命令行中添加JAR
java-classpath/jar1;path/jar-App
在异常堆栈中,您应该始终检查“起因”消息。在该堆栈中,您真正的异常是由以下原因引起的:java.lang.ClassNotFoundException:org.drools.planner.core.solution.solution
(另外需要注意的是——使用包。在适当的包中包含类有助于以后阅读代码。)正如@GPRathour在上面所写的,您需要将drools planner中的jar添加到类路径中 我猜
/home/jesvin/dev/drools/sudoku/binaries
是一个目录。你需要把jar放在那里。
比如说
declare-x CLASSPATH=“.:/home/jesvin/dev/drools/sudoku/binaries/drools planner core.jar
更好的方法是通过-classpath在命令行中添加JAR
java-classpath/jar1;路径/jar应用程序
在异常堆栈中,您应该始终检查“原因”消息。在这个例子中,真正的异常是由java.lang.ClassNotFoundException:org.drools.planner.core.solution.solution引起的
(需要注意的另一点是——使用包。在适当的包中包含类有助于以后阅读代码。)我建议您使用一个内置工具,它可以处理第三方依赖关系。例如,您可以简单地使用maven作为构建工具,并在项目pom文件中声明所需的所有依赖项
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
朱尼特
朱尼特
4
罐子
测试
真的
我建议您使用一个内置工具来处理第三方依赖关系。例如,您可以简单地使用maven作为构建工具,并在项目pom文件中声明所需的所有依赖项
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
朱尼特
朱尼特
4
罐子
测试
真的
马上!我使用dir/*
功能导入所有JAR,如declare-x CLASSPATH=“.:/home/jesvin/dev/drools/sudoku/binaries/*”
中所示。编译器的类路径被硬编码到一个自定义命令中,我不小心把环境变量留错了。没错!我使用dir/*
功能导入所有JAR,如declare-x CLASSPATH=“.:/home/jesvin/dev/drools/sudoku/binaries/*”
中所示。编译器的类路径被硬编码到自定义命令中,我不小心把环境变量留错了。