我遇到了下一个问题:
我正试图在控制台中运行我自己漂亮的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
答案 0 :(得分:1)
查看目标路径:./ all-libs / * .jar
不幸的是,这不是一个带有连字符的正确包名。你需要摆脱连字符或将其转换为下划线。
答案 1 :(得分:1)
似乎*.jar
被shell扩展为1.jar 2.jar ...
将jar文件列为-classpath dir1/1.jar:dir2/2.jar
对我有用。