我创建了一个使用Spring Core框架的简单程序,并尝试使用gradle构建它。能够成功编译项目但是当我尝试使用
执行程序时java -jar build \ libs \ knightFramework-0.1.0.jar
然后面临轰鸣声运行时异常,但同样的程序在Eclipse中工作正常。 请建议我必须在build.gradle中进行更改。
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
代码结构 src \ main \ java \ knightFramework - >包含类BraveKnight.java,KnightConfig.java,KnightMain.java,SlayDragonQuest.java和Interfaces:Knight.java,Quest.java
KnightMain.java
bk.embarkOnQuest()的O / P - >只是sysout(“踏上杀戮之龙任务”)
package knightFramework;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class KnightMain{
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(knightFramework.KnightConfig.class);
Knight bk = (Knight) ac.getBean("braveKnightBean");
bk.embarkOnQuest();
}
}
KnightConfig.java
package knightFramework;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class KnightConfig {
@Bean
public Knight braveKnightBean(){
return new BraveKnight(slayDragonQuest());
}
@Bean
public Quest slayDragonQuest(){
return new SlayDragonQuest();
}
}
的build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
mainClassName = 'knightFramework.KnightMain'
jar {
baseName = 'knightFramework'
version = '0.1.0'
manifest {
attributes 'Main-Class': 'knightFramework.KnightMain'
}
}
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework:spring-context:4.1.6.RELEASE")
}