使用JDK 1.8 java编译:无法访问类文件。。。找不到类文件

使用JDK 1.8 java编译:无法访问类文件。。。找不到类文件,java,java-8,javac,jdk1.6,jdk1.8.0,Java,Java 8,Javac,Jdk1.6,Jdk1.8.0,虽然使用JDK1.6版本成功编译了相同的代码,但升级到JDK1.8后,它不会编译,说java无法访问…类文件…因为类文件虽然存在,但找不到它 我在IntelliJ Idea 13 IDE中编译这个,尝试了重建选项和配置的ANT构建-结果是一样的 非常感谢您的帮助 cannot access IDispatchRequest class file for com.abc.xyz.orchestrator.dispatch.IDispatchRequest not found 1 error C

虽然使用JDK1.6版本成功编译了相同的代码,但升级到JDK1.8后,它不会编译,说
java无法访问…类文件…因为类文件虽然存在,但找不到它

我在IntelliJ Idea 13 IDE中编译这个,尝试了重建选项和配置的ANT构建-结果是一样的

非常感谢您的帮助

cannot access IDispatchRequest
class file for com.abc.xyz.orchestrator.dispatch.IDispatchRequest not found
1 error


Compile failed; see the compiler error output for details.
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1079)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:357)
    at org.apache.tools.ant.Target.performTasks(Target.java:385)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
    at org.apache.tools.ant.Main.runBuild(Main.java:758)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.Main.start(Main.java:179)
    at org.apache.tools.ant.Main.main(Main.java:268)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)

此问题现已解决:)。它基本上与类路径设置相关,只适用于JDK1.8

例如:如果类“A”引用了类B,而类B实现了一个接口,比如说“C”,那么JDK 1.8中的javac需要类路径上的类B和接口C,而在1.8之前,只有类路径上的类B就足够了


请参阅以了解更多信息。

我在执行返回类路径中没有的类的函数时遇到了这个问题,但我只想访问他的内部字段。 例如:
container.getContent().getField()

我必须导入Content类才能使其正常工作。

您可以使用gradle解决此问题

将“transitive=true”添加到依赖项中。就这样,

    compile('com.***.android:***sdk:1.0.2.6@aar') {
        transitive = true
    }

Build->Rebuild项目对我来说很有效,这意味着我下载了一个损坏的jar。Nuke~/.m2/repository并重试…

对于我来说,无法访问的类位于外部JAR中。 这个场景与这里被接受的答案是合适的

我解决了我的问题,将JAR作为一个依赖项添加到抛出错误的模块中。
这意味着,如果错误是从类A抛出的,而类C未被访问,我将包含类C的JAR作为依赖项添加到包含类A的模块的pom.xml中。

检查“缺少”的类是否实际位于编译时类路径/构建路径上。是的,Stephen,它位于构建路径中。如果我切换回JDK1.6,在编译过程中看不到任何问题,迁移到1.8时会发生问题迁移到1.8时eclipse是否报告了任何编译时问题