liij的博客(博客标题)

liij的博客(博客子标题)

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用idea2019阶段报的一些错:

1、'xxxServlet' is not assignable to 'javax.servlet.Servlet'

解决方案:把tomcat加入classptah!

2、Error:Internal error: (java.lang.IllegalAccessError) class com.intellij.util.io.FileChannelUtil (in unnamed module @0x15761df8) cannot access class sun.nio.ch.FileChannelImpl (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x15761df8

解决方案: 解决JDK9以上的非法反射访问警告_氷泠的博客-CSDN博客_jdk9 反射
OLP CLI error: java.base does not export sun.security.util to unnamed module under JDK 16
基于以上两个pages等内容,我在虚拟机加了两个参数--illegal-access=permit --add-opens java.base/java.lang=ALL-UNNAMED

我的浅见:出现这个问题,应该是jdk的锅,好像是高版本的jdk不允许使用反射等来访问其一部分的内容,为了安全性

3、Error:Internal error: (java.lang.NoClassDefFoundError) Could not initialize class com.intellij.util.io.FileChannelUtil [java - Problem with IntelliJ - Cannot run simple Spring Application - Stack Overflow](https://stackoverflow.com/questions/66764737/problem-with-intellij-cannot-run-simple-spring-application)

我的浅见:这是最致命的问题,我无论怎么折腾都是这个问题,我甚至在网路上找不到任何相同的案例。中途我卸载重装了我的idea2019.3.3,卸载重装jdk17,依然无解。最后抱着试一试的心态,卸载idea2019后安装了idea2020,居然就不再报这个错了。

我的浅见:进行项目的搬迁是一件不容易的事,本来我以为可以直接借助idea的重构,就自动完成。没想到后面还是要十几个项目一个个来,在拷贝到别的地方后,每一个都要手动把目录变为模块,添加类库,添加facet,添加artifact,配置tomcat。完成这些只是基本,后面还要面临随时会冒出来的各种报错

更换为idea2020阶段后报的一些错:

1、 org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["ajp-nio-8009"]报错

Problem context:把idea2019换成idea2020后,终于能成功运行之前迁移过来的项目和模块,之前报的错都是网上找不到的。现在模块能运行了,但每次都会出现下面这堆东西
点击查看折叠代码块 27-Mar-2022 11:18:38.675 严重 [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["ajp-nio-8009"] java.lang.IllegalArgumentException: timeout < 0 at java.base/sun.nio.ch.ServerSocketAdaptor.setSoTimeout(ServerSocketAdaptor.java:162) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:352) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:823) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:476) at org.apache.catalina.connector.Connector.initInternal(Connector.java:960) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:871) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.startup.Catalina.load(Catalina.java:592) at org.apache.catalina.startup.Catalina.load(Catalina.java:615) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:308) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:482)

27-Mar-2022 11:18:38.675 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:871)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:592)
at org.apache.catalina.startup.Catalina.load(Catalina.java:615)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:308)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:482)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more
Caused by: java.lang.IllegalArgumentException: timeout < 0
at java.base/sun.nio.ch.ServerSocketAdaptor.setSoTimeout(ServerSocketAdaptor.java:162)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:352)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:823)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:476)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
... 13 more

解决方案:把tomcat的conf下的servlet.xml的<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>给注释掉,然后就不报错了。

2、 现在大部分模块能运行了,但有一些模块运行的时候,虽然部署服务成功,但控制台会出现如下错误(以我的模块04_hellojsp为例):

描述:这种错误的一个特点是,虽然访问index.jspbao会500,但对其他的一些资源的访问是正常的
点击查看折叠代码块 27-Mar-2022 14:28:25.695 严重 [http-nio-8080-exec-1] org.apache.jasper.compiler.JDTCompiler$1.findType Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.(ClassFileReader.java:406) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:238) at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:210) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:174) at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getType(PackageBinding.java:145) at org.eclipse.jdt.internal.compiler.lookup.Scope.findType(Scope.java:1926) at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3254) at org.eclipse.jdt.internal.compiler.lookup.Scope.getBinding(Scope.java:2192) at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getBinding(BlockScope.java:485) at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.resolveType(QualifiedNameReference.java:999) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:636) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1026) at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:117) at org.eclipse.jdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:404) at org.eclipse.jdt.internal.compiler.ast.Block.resolveUsing(Block.java:130) at org.eclipse.jdt.internal.compiler.ast.TryStatement.resolve(TryStatement.java:1073) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:634) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:306) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:544) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1195) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1308) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:593) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:867) at org.eclipse.jdt.internal.compiler.Compiler.processCompiledUnits(Compiler.java:550) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:462) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:417) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:363) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:338) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:325) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 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:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1156) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833)
与此同时,首次启动服务器后,跳出的http://localhost:8080/04_hellojsp_war_exploded/也会报错如下 后面如果手动进入http://localhost:8080/04_hellojsp_war_exploded/index.jsp,报错如下:

解决方案:把jsp里面的`System.out.println(i);`的`System.`去掉,因为> jsp中不能用System.out.println()而要用out.println()

<%
for(int i=0;i<10;i++){
//在Java控制台输出
out.println(i);
}
%>

我的疑问:为什么以前没有发现这个问题,现在把项目、模块搬迁了,把idea换为2020,tomcat从8.5.xx换成8.0.52,才发现呢?还是说之前没有问题,现在才有了问题?问题依然没有得到解决,

3、在jsp导入自建类报错:The import XXX cannot be resolved

解决方案:清除缓存,重启idea,<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.com.com.User" %>的User就不爆红了

4、import sun.misc.BASE64Encoder时爆红,以及相关的一系列问题:

IDEA sun.misc.BASE64Encoder报错 - moonsoft - 博客园

解决方案:把代码注释掉,并参照这个page的做法进行修改,改为使用import java.util.Base64。

我的疑问:为什么以前没报错,现在才报错呢?问题依然没有得到解决, 同时在本项目引申出一个新问题:fileItem.write(new File("D:/"+fileItem.getName()));这里如果不给出路径,默认路径是哪里?我没有在工程路径下面找到我想要的结果

5、总结一下后面遇到的其他的小问题,依旧是jsp不能使用sout的问题。其次就是一些琐碎的事情,比如

用ajaxGET的网址,本机名的和localhost居然不同源;

以及有部分的模块需要改一改_war_exploded的后缀(因为之前改过才需要改)

后续:补充一下在早期,在idea上另一个折腾了很久的事情,就是.idea文件夹的不显示。后面的解决方法是,在工程(workspace)里面建一个模块a,在模块a里面再建需要建的各个模块。工程——元模块——模块的嵌套顺序。
posted on 2022-03-27 14:27  liij  阅读(454)  评论(0)    收藏  举报

联系方式:n1rk@qq.com 非诚勿扰