今天在Tomcat配置启动时,eclipse报出了如下错误:
<span style="color:#ff0000;">The APR</span> based Apache Tomcat Native library which allows optimal performance in production environments <span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">was not found</span></span> on the java.library.path: C:\Program Files\Java\jdk1.6.0\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.6.0\jre\bin;C:/Program Files/Java/jdk1.6.0/bin/../jre/bin/client;C:/Program Files/Java/jdk1.6.0/bin/../jre/bin;C:/Program Files/Java/jdk1.6.0/bin/../jre/lib/i386;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\Java\jdk1.6.0\bin;d:\oracle\product\11.1.0\db_1\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;D:\work\eclipse-jee-helios-SR2-win32\eclipse;
然后我导入的WEB项目运行时存在一些问题,作为新手的我理所当然的以为肯定是Tomcat并没配置好,出现了问题。我简要的说一下 我这一天的解决过程:
- 下载并配置tcnative1.dll文件
大部分的技术博客和百度知道都是这样说的:你的tomcat中的Bin目录下和C:/WINDOWS/system32/下都缺少一个这样的文件,只要你下载了对应版本的相关文件,并拷贝到这两个地方就可以了,然后就没有为什么了。
然而,tcnative1.dll文件并没有针对tomcat的版本产生对应的文件,也就是说你必须一个个去下载各种版本的tcnative1.dll,然后看看能不能碰巧解决你的问题,我试了我能下载的所有版本并一一尝试,很操蛋的没有一个能解决一个问题,其实这个问题根本无关紧要,是我小题大做了,后面会讲到。
- 下载其他版本的tomcat进行尝试
我之前的tomcat是6.0.039,于是我尝试了7.0版本。
红色区域是压缩版,绿色区域是安装版(安装版的bin文件夹内没各种命令,如startup.bat,catalina.bat)。。
过程就不提了,7.0版本的问题更大,直接无法启动,类似与下面的结果:(7.0我已经删除了,结果我是复制别人的)
Tomcat v6.0 Server at localhost [Apache Tomcat]
org.apache.catalina.startup.Bootstrap at localhost:2329
Thread [main] (Suspended (exception NoSuchMethodException))
Class<T>.getMethod(String, Class...) line: not available
LogFactoryImpl.getLogConstructor() line: 409
LogFactoryImpl.newInstance(String) line: 502
LogFactoryImpl.getInstance(String) line: 285
LogFactoryImpl.getInstance(Class) line: 255
LogFactory.getLog(Class) line: 381
StartupListener.<init>() line: not available
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: not available
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: not available
Constructor<T>.newInstance(Object...) line: not available
Class<T>.newInstance0() line: not available
Class<T>.newInstance() line: not available
StandardContext.listenerStart() line: 3787
StandardContext.start() line: 4342
StandardHost(ContainerBase).start() line: 1045
StandardHost.start() line: 719
StandardEngine(ContainerBase).start() line: 1045
StandardEngine.start() line: 443
StandardService.start() line: 516
StandardServer.start() line: 710
Catalina.start() line: 578
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
Bootstrap.start() line: 288
Bootstrap.main(String[]) line: 413
D:\jre1.5.0_04\bin\javaw.exe (2009-10-19 上午09:36:01)
完蛋了,貌似更严重了,我查了半天说的最靠谱的回答是:java上的servlet的api是6.0的,不适应用于现在7.0的版本上,我尝试了将7.0中lib内的servlet-api加入到jre中,但是没成功,放弃了压缩版。
选择安装版后,安装的过程倒是挺TM顺利的,妈蛋,感觉看到了胜利的曙光,然后,eclipse根本就启动不了,说是缺少启动的各种东西.........
以上办法不仅连startup.bat都启动不了,而且也无法通过localhost:8080来连接测试,为什么会这样
- 放弃抵抗
过去了一整个白天,重新选择了6.0.39,开始考虑为什么自己那么作。现在心里只有一个念头,不管什么版本吧,能用就行了。然后我看到这个博客中的一句话:http://blog.sina.com.cn/s/blog_49c3e6050100uhfw.html
这个问题是可以忽略的!!!
内心的蛋疼已经无语言表,最后的运行显示图如下:
我不知道这样算不算正确启动了,反正我已经心力憔悴开始怀疑自己要不要走上程序员这条路了.............