java - 由于 StringIndexOutOfBoundsException,maven-javadoc-plugin 失败

标签 java maven exception javadoc maven-javadoc-plugin

我总是得到 StringIndexOutOfBoundsException运行时出现问题 mvn javadoc:javadoc .有人知道这个错误吗?以下是完整的堆栈跟踪:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Java Tool 0.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-javadoc-plugin:2.9:javadoc (default-cli) @ osgl-tool >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ osgl-tool ---
[INFO]
[INFO] <<< maven-javadoc-plugin:2.9:javadoc (default-cli) @ osgl-tool <<<
[INFO]
[INFO] --- maven-javadoc-plugin:2.9:javadoc (default-cli) @ osgl-tool ---
[INFO]
Loading source files for package org.osgl.exception...
Loading source files for package org.osgl.util.algo...
Loading source files for package org.osgl.util...
Loading source files for package org.osgl.web.util...
Loading source files for package org.osgl...
Constructing Javadoc information...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.890s
[INFO] Finished at: Tue Feb 18 21:05:48 EST 2014
[INFO] Final Memory: 10M/242M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:javadoc (default-cli) on project osgl-tool: An error has occurred in JavaDocs report generation:
[ERROR] Exit code: 1 - java.lang.StringIndexOutOfBoundsException: String index out of range: -22
[ERROR] at java.lang.String.substring(String.java:1937)
[ERROR] at java.lang.String.substring(String.java:1904)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.simpleBinaryName(ClassReader.java:958)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readEnclosingMethodAttr(ClassReader.java:930)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readMemberAttr(ClassReader.java:909)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readClassAttr(ClassReader.java:1053)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readClassAttrs(ClassReader.java:1067)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readClass(ClassReader.java:1560)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.readClassFile(ClassReader.java:1658)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1845)
[ERROR] at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1777)
[ERROR] at com.sun.tools.javac.code.Symbol.complete(Symbol.java:384)
[ERROR] at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:766)
[ERROR] at com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:698)
[ERROR] at com.sun.tools.javadoc.ClassDocImpl.getFlags(ClassDocImpl.java:103)
[ERROR] at com.sun.tools.javadoc.ClassDocImpl.isAnnotationType(ClassDocImpl.java:114)
[ERROR] at com.sun.tools.javadoc.DocEnv.isAnnotationType(DocEnv.java:572)
[ERROR] at com.sun.tools.javadoc.DocEnv.getClassDoc(DocEnv.java:544)
[ERROR] at com.sun.tools.javadoc.PackageDocImpl.getClasses(PackageDocImpl.java:154)
[ERROR] at com.sun.tools.javadoc.PackageDocImpl.addAllClassesTo(PackageDocImpl.java:170)
[ERROR] at com.sun.tools.javadoc.RootDocImpl.classes(RootDocImpl.java:178)
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:96)
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
[ERROR] at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
[ERROR] at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
[ERROR] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
[ERROR] at com.sun.tools.javadoc.Start.begin(Start.java:128)
[ERROR] at com.sun.tools.javadoc.Main.execute(Main.java:41)
[ERROR] at com.sun.tools.javadoc.Main.main(Main.java:31)
[ERROR]
[ERROR] Command line was: R:\jdk\jre\..\bin\javadoc.exe @options @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in 'c:\p\java-tool\target\site\apidocs' dir.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

注意事项

  1. 是的,我正在使用 eclipse 编译器
  2. 问题的答案Using Eclipse compiler instead of javac results in javadoc crash不要帮忙
  3. 现在换成java编译器了,还是不行
  4. 这是一个单独的 java 文件(可以编译),在其上运行 javadoc 时会失败:https://github.com/greenlaw110/java-tool/blob/master/src/main/java/org/osgl/_.java
  5. pom.xml 循环依赖问题与此问题相关。在 Aleksandr 的回答之后删除循环依赖项确实使项目能够构建,甚至能够使用“mvn package -Pdist”构建,但它并没有解决 javadoc 问题。您可以构建和生成 javadoc 的原因是我用 <excludePackageNames>org.osgl:org.osgl.util</excludePackageNames> 删除了问题包.尝试从 pom.xml 中取出该行并运行 mvn clean package -Pdist再次重现 javadoc 问题
  6. 我选择_作为 underscore.js 之后的类名项目。它用于将一些常用实用程序聚合到类似元的命名空间中。不喜欢的人就用Osgl替换 _因为他们互相取别名
  7. 我在 digital ocean 上的 linux box 中克隆项目后,它确实取得了成功,这真的很奇怪。我的 Windows 开发机器一定有问题!
  8. 问题已解决!删除循环依赖确实解决了这个问题。我的猜测是循环依赖带回了旧的 osgl-tool pom.xml 版本,它使用 eclipse 编译代码并与 javadoc 冲突

最佳答案

您的问题出在您的 pom.xml 文件中。您正在声明 org.osgl:osgl-storage 依赖项,它依赖于 org.osgl:osgl-tool - 您正在尝试构建的同一项目,但是不同的版本。排除这种传递依赖,它应该可以工作。

<dependency>
    <groupId>org.osgl</groupId>
    <artifactId>osgl-storage</artifactId>
    <version>0.3-SNAPSHOT</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>org.osgl</groupId>
            <artifactId>osgl-tool</artifactId>
        </exclusion>
    </exclusions>
</dependency> 

关于java - 由于 StringIndexOutOfBoundsException,maven-javadoc-plugin 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850359/

相关文章:

.net - 引发NullReferenceException时检测目标对象是什么

xml - 在模块路径或类路径上未找到 JAXB-API 的 javax.xml.bind.JAXBException 实现

java - Maven: OutofMemoryError 后跟 Could not create the Java virtual machine

java - 从内存中删除 View

java - 在现有分析之前注入(inject) Sonar 分析

java - Spring 可以在 finally block 中提交事务,并在 try block 中使用 RunTimeException

java - Maven 无法下载,因为 Maven Central 出现 PKIX 错误

eclipse - Eclipse 的 Run As > Maven Package 去哪里了?

java - 为什么方法抛出异常而不是返回 null?

java - Hibernate 异常 : Unable to find properties . .. 在用 @IdClass 注释的实体中