khi*_*zar 0 java spring-mvc filenotfoundexception
我正在尝试使用ip2c根据用户的IP获取国家/地区代码.现在的问题是它无法找到它必须搜索的二进制文件.它抛出以下ecxepion
java.io.FileNotFoundException: ip-to-country.bin (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at net.firefang.ip2c.input.RandomAccessBuffer.<init>(Unknown Source)
at net.firefang.ip2c.IP2Country.<init>(Unknown Source)
at net.firefang.ip2c.IP2Country.<init>(Unknown Source)
at com.em.ss.controllers.CalendarController.postReminder(CalendarController.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.em.ss.filter.GzipFilter.doFilter(GzipFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
该文件位于项目的基本文件夹中,如果我创建一个main函数并创建一个文件描述符,它会正确找到该文件,一切都很好.
public static void main(String[] args) throws IOException
{
File file=new File("ip-to-country.bin");
System.out.println(file.getCanonicalPath());
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的应用程序时,这是一个spring mvc应用程序,然后ip2c找不到该文件.这是ip2c试图寻找它的方式.
m_input = new MemoryMappedRandoeAccessFile(file,"r");
其中file只是bin文件的名称,即ip-to-country.bin.我完全陷入困境,不知道这个问题是什么.
如果"服务器找不到文件,但它就在那里!" 问题,这将解决它(总是对我来说):
File file = new File("somefilename");
System.out.println(file.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
您将很快发现服务器正在查找的目录不是您想象的那样.通常因为主目录不是你想象的那样.
归档时间: |
|
查看次数: |
2791 次 |
最近记录: |