java.lang.NoSuchMethodError: xjavadoc.XJavaDoc.setDocEncoding(Ljava/lang/String;)V

昨晚开始了痛苦的历程。

一向工作得好好的xdoclet,自从我将核心包更新为1.2.2后,噩梦开始了。每次运行hibernatedoclet, 都会出现以下错误:

java.lang.NoSuchMethodError: xjavadoc.XJavaDoc.setDocEncoding(Ljava/lang/String;
)V
        at xdoclet.XmlSubTask.startProcess(XmlSubTask.java:184)
        at xdoclet.modules.hibernate.HibernateSubTask.execute(HibernateSubTask.j
ava:123)
        at xdoclet.XDocletMain.start(XDocletMain.java:48)
        at xdoclet.DocletTask.start(DocletTask.java:468)
        at xjavadoc.ant.XJavadocTask.execute(XJavadocTask.java:96)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
        at org.apache.tools.ant.Main.runBuild(Main.java:673)
        at org.apache.tools.ant.Main.startAnt(Main.java:188)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)

无法生成hibernate配置文件

没有源码,反编译找到XmlSubTask,没发现什么问题;找到xjavadoc相关的类,setDocEncoding赫然存在。

Google了一下,只有两条纪录,也没有解决,只是说注意版本。我试着将所有xdoclet jar文件换成1.2b4, 再次ant…居然成功了!郁闷,然后依次将hibernate, web相关的jar更新为1.2.2,没问题;就在更新xdoclet.jar之后,出现了上面提到的那个错误。

问题很明显了,是最新版本的问题。具体原因不祥。还是老老实实用旧版本吧。

Comments are closed.