javadoc doclet libs:运行时包含非法包名或ClassCastException

时间:2012-05-04 09:11:55

标签: javadoc libs doclet

我遇到了下一个问题:

我正试图在控制台中运行我自己漂亮的doclet(Windows 7):

javadoc com.mypackages.api -sourcepath ./src/main/java/

这让我有了一大堆例外:

java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc
    at com.sun.tools.javadoc.AnnotationDescImpl.annotationType(AnnotationDescImpl.java:46)
    at com.sun.tools.doclets.internal.toolkit.util.Util.isDeprecated(Util.java:811)
    at com.sun.tools.doclets.formats.html.PackageWriterImpl.writeClassesSummary(PackageWriterImpl.java:114)

(总是一样)。

然后,我在StackOverflow中发现有人说这是第三方库与注释问题(StackOverFlow: Why am I getting a ClassCastException when generating javadocs?)。解决方案似乎是将带有注释的库添加到类路径中,因此我运行了下一行:

javadoc com.mindmatics.mcashwebservice.remote.api -sourcepath ./src/main/java/ -docletpath ./all-libs/*.jar

我现在收到下一个错误:

javadoc: error - Illegal package name: "./all-libs/webservice-commons-1.0.2-SNAPSHOT.jar"

所有libs包含在all-libs目录中。可以解释一下我做错了什么吗?非常感谢你: - )

PS:我使用的是JDK 1.6

2 个答案:

答案 0 :(得分:1)

查看目标路径:./ all-libs / * .jar

不幸的是,这不是一个带有连字符的正确包名。你需要摆脱连字符或将其转换为下划线。

答案 1 :(得分:1)

似乎*.jar被shell扩展为1.jar 2.jar ...
将jar文件列为-classpath dir1/1.jar:dir2/2.jar对我有用。