jfinal-4.x-bin-with-src.jar提示文件不包含类Token

公司的项目用jdoc来生成客户端的接口文档,https://gitee.com/lianghao2016/JDoc

其中使用了jdk的doc工具,生成文档的部分源码为

        ......

        files.add(0, "-doclet");

        files.add(1, DocumentParser.class.getName());

        String[] docArgs = files.toArray(new String[files.size()]);

        com.sun.tools.javadoc.Main.execute(docArgs);

        ......


运行后出现报错信息

xxx\lib\jfinal-4.1-bin-with-src.jar(com/jfinal/template/stat/Parser.java):34: 错误: 无法访问Token

private static final Token EOF = new Token(Symbol.EOF, -1);

                     ^

  错误的源文件: xxx\lib\jfinal-4.1-bin-with-src.jar(com/jfinal/template/stat/Token.java)

    文件不包含类com.jfinal.template.stat.Token

    请删除该文件或确保该文件位于正确的源路径子目录中。

如果用maven库的不带src的jar就不会报错,或者换回较旧版本的jfinal-3.2-bin-with-src.jar也不会报错

评论区

JFinal

2019-05-31 16:14

或许是整合的时候出现问题, 一会我上传一个新的,记得尽早来反馈一下

JFinal

2019-05-31 16:33

刚刚处理了一下,jfinal-4.1-bin-with-src.jar 是对的,可以使用,建议重新下载一次,可能是下载途中出现的问题

注意版本是 jfinal 4.1

zeroabc

2019-05-31 16:58

JFinal

2019-05-31 17:01

@zeroabc 直接使用 jfinal-4.1-bin.jar , 然后源码就用上 jfinal-4.1-src.jar , 看看行不行

JFinal

2019-05-31 17:02

检查一下是不是有老版本的 jfinal jar 包有干扰,删掉那些老的 jar 包

zeroabc

2019-05-31 17:18

@JFinal 确认没有老版本的jar。单用jfinal-4.1.jar没问题,如果加上 jfinal-4.1-src.jar一样会报错,晕

zeroabc

2019-05-31 17:18

E:\WorkSpace\JEE_Workspaces\jfinal_min\WebRoot\WEB-INF\lib\jfinal-4.1-sources.jar(com/jfinal/template/stat/Parser.java):34: 错误: 无法访问Token
private static final Token EOF = new Token(Symbol.EOF, -1);
^
错误的源文件: E:\WorkSpace\JEE_Workspaces\jfinal_min\WebRoot\WEB-INF\lib\jfinal-4.1-sources.jar(com/jfinal/template/stat/Token.java)
文件不包含类com.jfinal.template.stat.Token
请删除该文件或确保该文件位于正确的源路径子目录中。

JFinal

2019-05-31 17:20

@zeroabc 这就奇怪了, jfinal-4.1-src.jar 仅仅只是个源码而已,可能只是你的开发环境的个别问题,我自己机器上一点事没有

让同事帮你试一下看看,估计也没事

zeroabc

2019-05-31 17:41

com.jfinal.template.stat.Token.java 第22行,定义这个类的时候加上public关键字,把.java替换到-bin-with-src.jar里面就不会报错了。。这是为什么?

JFinal

2019-05-31 20:30

@zeroabc 这个应该是 eclispe 或者 IDEA 的 bug,Token.java 这个文件起码一年多没动过了

zeroabc

2019-05-31 20:59

@JFinal 用的是eclispe

zeroabc

2019-06-03 16:17

@JFinal 詹总,可以稍微改一下git的代码吗,com.jfinal.template.stat.Token.java 第22行,定义这个类的时候加上public关键字

JFinal

2019-06-03 16:37

@zeroabc 下载最新版 jfinal-4.2-all.zip

zeroabc

2019-06-03 17:31

@JFinal 4.2也依然不行,报一样的错误。手动修改jar包里面的.template.stat.Token.java,加上public关键字后才不会报错

zeroabc

2019-06-04 11:07

@JFinal 詹总,可以稍微改一下git的代码吗,com.jfinal.template.stat.Token.java 第22行,定义这个类的时候加上public关键字

JFinal

2019-06-04 12:05

@zeroabc jfinal-4.2-bin-with-src.jar 这种 .class 与 .java 整合的 jar 包本身也是手动整合的,建议用 winrar 打开 Token.java , 加上 public 就好

这个问题肯定不是 jfinal 的问题,因为 Token.java 本身就是没有开放的,只是内部解析模板时使用

当然,开放也没关系,只不过你这个回复有点晚, 4.2 在前几天已经发布了

zeroabc

2019-06-04 14:07

@JFinal 没事,现在加上,后续版本有就行