在windows上使用Lucene生成索引文件,將索引文件複製到Linux服務器上,報錯「校驗錯誤,多是硬件問題」。
因此,Lucene的跨平臺只是代碼跨平臺,生成的索引不跨平臺。java
使用Java自帶的ObjectStream也是同樣,實際上並不跨平臺。web
必定要學會使用日誌,重視日誌。
e.printStackTrace()默認把錯誤輸出到了標準錯誤流,因此在日誌文件中是看不見異常的。正確姿式是使用logger.error(String msg,Throwable e);
也能夠使用System.setErr()進行輸入輸出重定向,把信息打印到某個文件中去,可是,這種方式不如打印到日誌文件中好。日誌系統的設計考慮了不少,如今的日誌系統不只效率極高,並且格式化很好、很系統,便於分析找出錯誤。
三軍未動,糧草先行。要把日誌擺到頭等位置。spring
下面是異常詳情:apache
org.apache.lucene.index.CorruptIndexException: checksum failed (hardware problem?) : expected=58f3d50e actual=af1eb55c (resource=BufferedChecksumIndexInput(MMapIndexInput(path="/home/ubuntu/poem-index/poem/segments_2"))) at org.apache.lucene.codecs.CodecUtil.checkFooter(CodecUtil.java:416) at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:400) at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:284) at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:57) at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:54) at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:685) at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:77) at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63) at data.model.PoemData.loadIndex(PoemData.java:27) at controller.MyApplication.init(MyApplication.java:47) at controller.MyApplication.configure(MyApplication.java:58) at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:119) at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:87) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:473) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1617) 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:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1483) at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:285) at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:206) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:586) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)