@JFinal tomcat 启动就报错,求帮助 Can not create instance of class: common.JFinalDemoConfig

@JFinal  七月 21, 2016 8:34:10 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:jfinal' did not find a matching property.

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server version:        Apache Tomcat/8.0.32

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server built:          Feb 2 2016 19:34:53 UTC

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server number:         8.0.32.0

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: OS Name:               Windows 8.1

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: OS Version:            6.3

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Architecture:          x86

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Java Home:             C:\Program Files (x86)\Java\jdk1.7.0_80\jre

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: JVM Version:           1.7.0_80-b15

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: JVM Vendor:            Oracle Corporation

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: CATALINA_BASE:         D:\Tool\apache-tomcat-8.0.32

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: CATALINA_HOME:         D:\Tool\apache-tomcat-8.0.32

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Xms800m

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Xmx800m

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -XX:MaxNewSize=256m

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -XX:MaxPermSize=256m

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dcatalina.base=D:\Tool\apache-tomcat-8.0.32

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dcatalina.home=D:\Tool\apache-tomcat-8.0.32

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dwtp.deploy=D:\Tool\apache-tomcat-8.0.32\webapps

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Djava.endorsed.dirs=D:\Tool\apache-tomcat-8.0.32\endorsed

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dfile.encoding=UTF-8

七月 21, 2016 8:34:10 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.7.0_80\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre1.8.0_72/bin/client;C:/Program Files (x86)/Java/jre1.8.0_72/bin;C:/Program Files (x86)/Java/jre1.8.0_72/lib/i386;C:\Program Files\ImageMagick-6.9.3-Q16;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Java\jdk1.8.0_72\bin;C:\Program Files (x86)\Java\jdk1.8.0_72\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\scala\bin;C:\Program Files (x86)\scala\jre\bin;C:\Program Files (x86)\LibreOffice 5\program;D:\Tool\apache-maven-3.3.3\bin;D:\Tool\gradle-2.10\bin;C:\Program Files\Microsoft\Web Platform Installer\;E:\office\pdfToImg\;C:\Program Files\Git\bin;D:\Program Files\eclipse-che-4.0.0-RC13\tools\jre\bin;C:\Program Files\MongoDB\Server\3.3\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\nodejs\;D:\Tool\mysql-5.7.13-winx64\bin;;C:\Program Files\Docker Toolbox;C:\Users\Administrator\AppData\Roaming\npm;D:\Tool\eclipse_ee;;.

七月 21, 2016 8:34:10 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["http-nio-8080"]

七月 21, 2016 8:34:10 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

信息: Using a shared selector for servlet write/read

七月 21, 2016 8:34:10 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["ajp-nio-8009"]

七月 21, 2016 8:34:10 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

信息: Using a shared selector for servlet write/read

七月 21, 2016 8:34:10 下午 org.apache.catalina.startup.Catalina load

信息: Initialization processed in 496 ms

七月 21, 2016 8:34:10 下午 org.apache.catalina.core.StandardService startInternal

信息: Starting service Catalina

七月 21, 2016 8:34:10 下午 org.apache.catalina.core.StandardEngine startInternal

信息: Starting Servlet Engine: Apache Tomcat/8.0.32

七月 21, 2016 8:34:12 下午 org.apache.jasper.servlet.TldScanner scanJars

信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

七月 21, 2016 8:34:12 下午 org.apache.catalina.core.StandardContext filterStart

严重: Exception starting filter jfinal

java.lang.RuntimeException: Can not create instance of class: common.JFinalDemoConfig

at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:98)

at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)

at java.util.concurrent.FutureTask.run(FutureTask.java:262)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.ClassNotFoundException: common.JFinalDemoConfig

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:195)

at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:96)

... 13 more


七月 21, 2016 8:34:12 下午 org.apache.catalina.core.StandardContext startInternal

严重: One or more Filters failed to start. Full details will be found in the appropriate container log file

七月 21, 2016 8:34:12 下午 org.apache.catalina.core.StandardContext startInternal

严重: Context [/jfinal] startup failed due to previous errors

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory D:\Tool\apache-tomcat-8.0.32\webapps\docs

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deployment of web application directory D:\Tool\apache-tomcat-8.0.32\webapps\docs has finished in 16 ms

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory D:\Tool\apache-tomcat-8.0.32\webapps\examples

七月 21, 2016 8:34:12 下午 org.apache.catalina.core.ApplicationContext log

信息: ContextListener: contextInitialized()

七月 21, 2016 8:34:12 下午 org.apache.catalina.core.ApplicationContext log

信息: SessionListener: contextInitialized()

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deployment of web application directory D:\Tool\apache-tomcat-8.0.32\webapps\examples has finished in 141 ms

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory D:\Tool\apache-tomcat-8.0.32\webapps\host-manager

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deployment of web application directory D:\Tool\apache-tomcat-8.0.32\webapps\host-manager has finished in 15 ms

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory D:\Tool\apache-tomcat-8.0.32\webapps\manager

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deployment of web application directory D:\Tool\apache-tomcat-8.0.32\webapps\manager has finished in 16 ms

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory D:\Tool\apache-tomcat-8.0.32\webapps\ROOT

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deployment of web application directory D:\Tool\apache-tomcat-8.0.32\webapps\ROOT has finished in 16 ms

七月 21, 2016 8:34:12 下午 org.apache.coyote.AbstractProtocol start

信息: Starting ProtocolHandler ["http-nio-8080"]

七月 21, 2016 8:34:12 下午 org.apache.coyote.AbstractProtocol start

信息: Starting ProtocolHandler ["ajp-nio-8009"]

七月 21, 2016 8:34:12 下午 org.apache.catalina.startup.Catalina start

信息: Server startup in 2092 ms


评论区

zqbc

2016-07-23 23:40

我最近也遇到了好多次,试过了网上说的几种解决方案均无效

JFinal

2016-07-24 11:21

@zqbc 我干脆直接说明错误原因吧:
1:在用 eclipse 创建 web 项目时,eclipse 默认会将编译后的 class 文件放在 build\classes 这个目录下面
2:而 web 项目在启动时默认会去 WEB-INF/class 下面去加载 class 文件
3:jfinal 手册中建议的大家启动 jetty 方式本质上是用一个 main 方法启动 jetty
4:问题来了,main 方法启动项目时会首先去 build/classes 读取类文件并加载,接下来 jetty 被启动,jetty、tomcat 这类 web 容器会去 WEB-INF/class 下面去加载 classes 文件
5:核心在于:main 方法从 build/classes 目录下面先加载了 JFinalDemoConfig,而 jetty 是从 WEB-INF/classes 下面加载的 JFinalDemoConfig,虽然名字一模一样,但却是不同的 class
6:所以 jfinal 手册中图文并茂地交待过在创建项目时,要将Default Output folder 中的 build/classes,改成 WebRoot/WEB-INF/classes
千言万语一句话:main 方法启动加载的 class 与在后续启动 jetty 后加载的 class 处于不同的目录之下,造成了冲突。这个问题如果不用 main 方法启动项目是不可能出现的

JFinal

2016-07-24 11:23

@zqbc 如果你在 eclipse 外部直接启动 tomcat 、jetty,则不涉及到此问题。在 eclipse 中启动 jetty,本质上是用的一个 public void main 方法,无论你是配置的 com.final.core.JFinal 还是手动创建的 main 再 JFinal.start(...) 这都是 main 方法启动的

JFinal

2016-07-24 11:24

@zqbc main 方法启动项目的一个本质特征就是默认不会去 WEB-INF/classes 加载类文件,而是从类似于 build/classes、bin 这样的路径下去读,所以 jfinal 手册第一章中用图片 + 文字就说明了要改掉 Default output folder

zpk

2016-08-20 13:15

使用eclipse通过tomcat部署代码,修改成/工程/WebRoot/WEB-INF/classes路径也同样出错,并且classes路径下没有任何文件,之前默认路径还有配置文件数据,修改后连配置文件都没有了,怎么修改才有效,网上方式都没用,修改路径也没用

Stefan

2016-12-27 18:21

@zpk 按照文档说明,以WebRoot/WEB-INF/classes作为Default Output folder后,你需要把web.xml也移动到WebRoot下应该能解决你的问题,web.xml默认是在WebContent下的。

常豆豆

2017-08-19 08:38

@JFinal 但是我本来用maven 没有异常也能运行都写好几天了,今天突然出现了这个问题

JFinal

2017-08-19 09:47

@常豆豆 将 maven 下的除了 pom.xml src 目录 .git 目录以外的任何 eclipse 或 IDEA 生成的文件全部删除掉,然后重新当成 maven 项目导入,开发工具会重建所有配置

注意,上面的办法前提是你的项目是标准的 maven 结构项目,这种方法屡试不爽

小飞侠丸子

2017-08-31 11:01

@JFinal 你好,我就是按照WebRoot/WEB-INF/classes配置,启动依然出现这个故障@JFinal

不知所以

2018-03-07 16:19

谢谢波总答疑。

cyf123

2018-03-14 09:41

@JFinal 这种方法果然是屡试不爽。我报的错也是这个。我的原先是web项目改成了maven项目,不过这个maven项目是我从头开始搭建的 。解决方式:
1.将 maven 下的除了 pom.xml src 目录 .git 目录以外的任何 eclipse 或 IDEA 生成的文件全部删除掉
2.然后重新当成 maven 项目导入,开发工具会重建所有配置(可以打开资源管理器看生成文件)

阿帕奇

2018-04-03 10:45

@JFinal 感谢波总提示;我的问题解决了;

热门反馈

扫码入社