com.caucho.jsp.JspParseException: javac: 无效的标记: IDEA.app/Contents/lib/idea_rt.jar

一、问题描述

Mac Book 使用Idea 使用Resin服务器开发时,遇到了这么一个问题。

[2019.11.14 18:26:26.018]>>>>Xss(Exception):sw=com.caucho.jsp.JspParseException: javac: 无效的标记: IDEA.app/Contents/lib/idea_rt.jar:/Users/xxx/Library/Caches/IntelliJIdea2018.3/captureAgent/debugger-agent.jar ....[2019.11.14 18:26:26.021]用法: javac <options> <source files>
[2019.11.14 18:26:26.021]-help 用于列出可能的选项

一个时间跨度比较大的项目,使用了JSP,web服务器使用的Resin 3.1.81

Resin本身需要使用jdk环境,而不是jre环境。初次访问某jsp文件时,会进行编译(上述抛出的异常也说明了这个问题)。

二、问题定位

此错误明显是javac命令使用不当造成的,javac也提示了无效的标记,说明命令中存在非法字符(此处估计使用了Runtime去执行javac进行的编译操作)。

那么就debug找到执行此部分的代码,如图:
com.caucho.jsp.JspParseException: javac: 无效的标记: IDEA.app/Contents/lib/idea_rt.jar_第1张图片
接下来的事情就简单了,复制到一个文本编辑器,查找异常信息中最前面的一段IDEA.app/Contents/lib/idea_rt.jar,结果如下:
在这里插入图片描述在这里插入图片描述
到这里问题就很明显了,因为IntelliJ Idea.app在我的xos系统上有个空格,而且执行时没有将像图一那样进行URL编码%20,所以出现了此问题。

三、解决

因为是Resin中的jar,不想去改源码打包,所以把APP中的空格去掉了。
其他解决办法也很多,比如用%20代替空格,用引号将带空格的字符串引用都可以解决。

发现这个问题的解决后让我有点难受,所以写篇博客记一下。

34FA0B8B9A38EF653AF65DB0D9D7EE28

你可能感兴趣的:(Java,Resin,javac)