在IDEA通过main方法启动JFinal项目,抛NoClassDefFoundError

Jimmy哥 发布于 2016/01/11 13:56
阅读 6K+
收藏 0

【华为云1024程序员节·向云而生】预约直播 抽14件华为电子产品礼包!>>>

@JFinal

在IntelliJ IDEA里通过main方法调用JFinal.start(...)来启动项目,会报以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/SessionManager
	at com.jfinal.server.ServerFactory.getServer(ServerFactory.java:44)
	at com.jfinal.core.JFinal.start(JFinal.java:136)
	.....
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.SessionManager
	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 8 more

如果修改com.jfinal:jetty-server:8.1.8的scope为compile(之前的scope为provided),项目启动成功。

<dependency>
	<groupId>com.jfinal</groupId>
	<artifactId>jetty-server</artifactId>
	<version>8.1.8</version>
	<scope>compile</scope>
</dependency>

有朋友遇到这样的情况么?

谢谢!!




加载中
1
Simmy
Simmy
provide 在编译的时候并不打包这个依赖项,所以如果你是用main启动jetty是要用 compile
Jimmy哥
Jimmy哥
回复 @Simmy : 谢谢回复! WEB-INF/lib/JFinal-event-1.2.1 只有这么一个jar包 没有与jetty-server相关的jar包 在idea使用jetty:run可以正常启动,如果使用main方法启动项目,就会抛异常。 启动的时候,在控制台输出的日志中,classpath无与jetty-server相关的jar包
Simmy
Simmy
是不是在eclipse中手工把jfinal所有的jar包复制到lib包了? eclipse项目会默认加载lib目录的包 idea是通过项目的依赖包设置来加载依赖包(包括maven的)
Jimmy哥
Jimmy哥
很奇怪的是:在eclipse 使用与idea同一套代码,eclipse通过main方法,是可以启动项目的. 不知道为什么会有两个不同的结果
返回顶部
顶部