eclipse java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11462080/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt (Access is denied)
提问by kip2
I'm trying to test my servlet by running it on Tomcat. However, I get the above error (sometimes this error occurs, but earlier the servlet was running fine). A few facts:
我正在尝试通过在 Tomcat 上运行它来测试我的 servlet。但是,我收到了上述错误(有时会发生此错误,但之前 servlet 运行良好)。几个事实:
I've looked thoroughly at the explanations given by this similar problem, as well as in here, and here
When I attempt to restart Tomcat (from within Eclipse's "Servers" tab), I get some error log from the console:
"SEVERE: Failed to open access log file [~\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt]" and at the very end of the log output, there's "INFO: SessionListener: sessionDestroyed('E9A6117FDF54752D80A1B9B72F2B83D3') -- see more info at the bottom of this text
“严重:无法打开访问日志文件 [~\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt]”并且在日志输出的最后,有“信息:SessionListener:sessionDestroyed('E9A6117FDF54752D80A1B9B3D73F54752D80A1B9B3D73F -- 在本文底部查看更多信息
I've looked at my log files at " C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs" and there is not file with contents similar to the ones in item (2) above
I 'deploy' my application through Eclipse (that is, during development, I depend on Eclipse to start Tomcat), only doing a real deployment when I have a stable version of my project by copying the appropriate java class files into Tomcat's /webapps/WEB-INF/classes folder and restarting Tomcat
我在“C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs”查看了我的日志文件,并且没有与上面第 (2) 项中的内容类似的文件
我通过 Eclipse“部署”我的应用程序(即在开发过程中,我依赖 Eclipse 来启动 Tomcat),只有当我有我的项目的稳定版本时才通过将适当的 java 类文件复制到 Tomcat 的 /webapps/ WEB-INF/classes 文件夹并重启Tomcat
and most importantly, 5. Typing in "http://localhost:8080" leads me to the Tomcat homepage (so I'm pretty sure the server is running), whereas "http://localhost:8080/MyProjectName/MyServlet" in the browser leads to the error shown this question's title.
最重要的是, 5. 输入“ http://localhost:8080”将我带到 Tomcat 主页(所以我很确定服务器正在运行),而“ http://localhost:8080/MyProjectName/MyServlet”在浏览器中导致显示此问题标题的错误。
Any ideas/help? Thank you very much!
任何想法/帮助?非常感谢!
See more of the error logs here
在此处查看更多错误日志
>!Jul 12, 2012 6:18:18 PM org.apache.catalina.core.AprLifecycleListener init
INFO: 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\Java\jdk1.7.0\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Users\Kiptoo\introcs\java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;C:\Program Files\MiKTeX 2.8\miktex\bin;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Matlab\R2010a\runtime\win32;C:\Program Files\Matlab\R2010a\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\QuickTime\QTSystem;C:\Users\Kiptoo\introcs\bin;C:\Users\Kiptoo\introcs\java\bin;C:\Python27;C:\Program Files\Eclipse;;.
Jul 12, 2012 6:18:20 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jul 12, 2012 6:18:20 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jul 12, 2012 6:18:20 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 2050 ms
Jul 12, 2012 6:18:20 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 12, 2012 6:18:20 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.25
Jul 12, 2012 6:18:20 PM org.apache.catalina.valves.AccessLogValve open
SEVERE: Failed to open access log file [C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt]
java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at org.apache.catalina.valves.AccessLogValve.open(AccessLogValve.java:1115)
at org.apache.catalina.valves.AccessLogValve.startInternal(AccessLogValve.java:1222)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:185)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1144)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Jul 12, 2012 6:18:20 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\AndroidTest
Jul 12, 2012 6:18:20 PM org.apache.catalina.core.StandardContext postWorkDirectory
WARNING: Failed to create work directory [C:\Program Files\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\AndroidTest] for context [/AndroidTest]
Jul 12, 2012 6:18:21 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [175] milliseconds.
Jul 12, 2012 6:18:21 PM org.apache.jasper.EmbeddedServletOptions <init>
SEVERE: The scratchDir you specified: C:\Program Files\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\AndroidTest is unusable.
Jul 12, 2012 6:18:21 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\docs
Jul 12, 2012 6:18:21 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\examples
Jul 12, 2012 6:18:21 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Jul 12, 2012 6:18:21 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Jul 12, 2012 6:18:21 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@ff8399')
Jul 12, 2012 6:18:21 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\host-manager
Jul 12, 2012 6:18:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\manager
Jul 12, 2012 6:18:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT
Jul 12, 2012 6:18:22 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 12, 2012 6:18:22 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 12, 2012 6:18:22 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2225 ms
Jul 12, 2012 6:19:22 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: sessionDestroyed('E9A6117FDF54752D80A1B9B72F2B83D3')
回答by Christopher Schultz
only doing a real deployment when I have a stable version of my project by copying the appropriate java class files into Tomcat's /webapps/WEB-INF/classes folder and restarting Tomcat
只有在我的项目有稳定版本时才进行真正的部署,方法是将适当的 java 类文件复制到 Tomcat 的 /webapps/WEB-INF/classes 文件夹中并重新启动 Tomcat
Stop right there: you should never put any files into webapps/WEB-INF
and expect anything good to come of it. Deploy your webapp properly, using a well-accepted packaging such as a WAR file or an exploded-WAR structure into the webapps directory.
停在那里:您永远不应该将任何文件放入webapps/WEB-INF
并期望从中得到任何好处。使用广为接受的包装(例如 WAR 文件或分解的 WAR 结构)将您的 web 应用程序正确部署到 webapps 目录中。
Second, the problem is obvious: java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt (Access is denied)
. Your Tomcat can't write to that file. Just because you are an admin doesn't mean that Tomcat can write to that directory: Tomcat doesn't play well with UAC as far as I know and you are trying to write to Program Files
which generally requires some ugly UI credentials-entry hack.
其次,问题很明显:java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2012-07-12.txt (Access is denied)
. 您的 Tomcat 无法写入该文件。仅仅因为您是管理员并不意味着 Tomcat 可以写入该目录:据我所知,Tomcat 不能很好地与 UAC 配合使用,并且您正在尝试写入Program Files
通常需要一些丑陋的 UI 凭据输入技巧。
So, check your file (and directory) permissions. Check the uid of the Tomcat process: make sure they are all good. Finally, consider using CATALINA_HOME
and CATALINA_BASE
(read the documentation for how to do that) to fix all of your permissions issues.
因此,请检查您的文件(和目录)权限。检查Tomcat进程的uid:确保它们都是好的。最后,考虑使用CATALINA_HOME
和CATALINA_BASE
(阅读文档了解如何执行此操作)来解决所有权限问题。