jfianl 以webapp为根目录 render报错问题

发布于 2021-11-26 03:46:34 字数 8629 浏览 728 评论 8

本人使用`maven`来管理`jfinal`的依赖加入了一下包:

                <dependency>
			<groupId>com.jfinal</groupId>
			<artifactId>jfinal</artifactId>
			<version>2.1</version>
		</dependency>

		<dependency>
			<groupId>com.jfinal</groupId>
			<artifactId>jetty-server</artifactId>
			<version>8.1.8</version>
		</dependency>
		<dependency>
			<groupId>com.jfinal</groupId>
			<artifactId>jfinal-ext</artifactId>
			<version>3.1.4</version>
		</dependency>
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.1</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.20</version>
		</dependency>



首先创建的的普通的maven项目,然后改成的web项目,设置web的根目录为`src/main/webapp`

其他的为默认。Deployment里面的参数如下:

/src/main/java    WEB-INF/classes
/src/main/webapp  /
/src/main/webapp  WEB-INF/classes
/src/test/java    WEB-INF/classes



然后在webapp目录下创建一个test.jsp文件

在已经设置好的Controller里设置render

@ActionKey("/test")
	public void test(){
		render("/test.jsp");
	}



会提示下面内容:

Starting JFinal 2.1
Starting scanner at interval of 5 seconds.
Starting web server on port: 8080
/home/innerac/workspace/jfianlm/src/main/webapp
一月 17, 2016 6:16:33 下午 com.mchange.v2.log.MLog 
信息: MLog clients using java 1.4+ standard logging.
一月 17, 2016 6:16:34 下午 com.mchange.v2.c3p0.C3P0Registry 
信息: Initializing c3p0-0.9.5.1 [built 16-June-2015 00:06:36 -0700; debug? true; trace: 10]
一月 17, 2016 6:16:34 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource 
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 2, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> z8kfsx9elxyyg31nac9a8|6e06451e, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> z8kfsx9elxyyg31nac9a8|6e06451e, idleConnectionTestPeriod -> 0, initialPoolSize -> 10, jdbcUrl -> jdbc:mysql://127.0.0.1/swjsysq, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 20, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 100, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
Starting Complete. Welcome To The JFinal World :)
/home/innerac/workspace/jfianlm/target/classes/edu/innerac/jfianlm/controller
一月 17, 2016 6:16:42 下午 com.jfinal.core.ActionHandler error
严重: /test
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at com.jfinal.aop.Invocation.invoke(Invocation.java:87)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:82)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:365)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
	at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
	... 25 more
Caused by: java.lang.NoClassDefFoundError: javax/el/ELResolver
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at com.jfinal.render.JspRender.<clinit>(JspRender.java:41)
	at com.jfinal.render.RenderFactory$JspRenderFactory.getRender(RenderFactory.java:294)
	at com.jfinal.render.RenderFactory.getRender(RenderFactory.java:170)
	at com.jfinal.core.Controller.render(Controller.java:965)
	at edu.innerac.jfianlm.controller.InneracController.test(InneracController.java:42)
	... 30 more
Caused by: java.lang.ClassNotFoundException: javax.el.ELResolver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 47 more



我在其中打印`webroot`目录如下:

String webRoot = PathKit.getWebRootPath();
System.out.println(webRoot);



他的输出时预期的目录:

/home/innerac/workspace/jfianlm/src/main/webapp



即使我将test.jsp放到和控制器同一个目录下然后改成render("test.jsp")也是同样的错误。

求解答啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

瑾夏年华 2021-12-02 09:36:55

最近我也闲得蛋痛,在折腾Maven,把原来的JFinal项目迁移到Maven下之后依赖包应该全了,应用也启动正常,就是访问出错。请教下:JFinal.start("xxxxxxxx", 8090, "/web", 5); 这里的xxxx路径是指向哪个目录?

沦落红尘 2021-12-02 09:34:44

回复
我的是这样的

情场扛把子 2021-12-02 09:31:01

回复
我的是这样的 src/main/webapp 8080 / 5 应该是默认输出路径

坏尐絯 2021-12-02 09:19:53

我将.m2下的jetty-server-8.1.8.jar这个依赖包换成官网下载的依赖包就可以用了。

凌乱心跳 2021-12-02 07:41:24

发现了原因所在,在官网下载的jar包里面内容是这样的:

而通过maven仓库下载下来的包是这样的

包里面的内容不太一样,所以找不到类了

java.lang.NoClassDefFoundError: javax/el/ELResolver

顾挽 2021-12-02 01:36:09

好的,谢谢我去试一试,主要是和我以前用非maven方式加入的包一样,可是这里出错了。再次感谢

猫性小仙女 2021-12-01 11:18:45

您好,能不能看一下下面的那个回答,请问有什么好的解决办法

奢望 2021-11-27 10:33:34

   注意看这个异常信息:
Caused by: java.lang.NoClassDefFoundError: javax/el/ELResolver,证明是缺少 jar 包,在jfinal官网下载 jfinal-2.1-all.zip这个文件,里面有个 lib目录,其中有一个jar使用说明文件,打开这个文件,找到jsp、jstl所需要的相关 jar包,放入即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文