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

时间:2016-10-26 07:01:32

标签: java java-8 javac jdk1.6 jdk1.8.0

尽管使用JDK 1.6版本成功编译了相同的代码,但在升级到JDK 1.8之后,它将无法编译,说java cannot access ....class file ...as class file not found though it exists

我在IntelliJ Idea 13 IDE中编译它,尝试使用Rebuild选项以及配置的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)

6 个答案:

答案 0 :(得分:10)

此问题现已解决:)。它基本上与类路径设置有关,仅适用于JDK 1.8。

例如:如果上课' A'引用了B类,而B类正在实现一个界面,即C'那么JDK 1.8中的javac在类路径上同时需要B类和接口C,而在类路径上只有类B的B类就足够了。

请参阅https://bugs.openjdk.java.net/browse/JDK-8055048了解详情。

答案 1 :(得分:1)

Build-> Rebuild Project为我工作

答案 2 :(得分:0)

当执行一个函数,该函数返回一个我在classpath中没有的类时,我遇到了这个问题,但是我只想访问他的内部字段。 例如: import tkinter as tk from tkinter import ttk root = tk.Tk() tree = ttk.Treeview(root, column=("col1","col2"), show="headings") style = ttk.Style(root) style.configure('my.Treeview', rowheight=50) tree.configure(style='my.Treeview') tree.heading("#0", text="COMPANY NAME") tree.heading("#1", text="DEPARTMENT") tree.heading("#2", text="BRANCH") tree.column("#0", stretch=tk.NO, minwidth=100, width=000) tree.column("#1", stretch=tk.NO, minwidth=100, width=400) tree.column("#2", stretch=tk.NO, minwidth=100, width=400) tree.insert("", tk.END, values=("Am using python version 3.6.1 \n on windows machine ", "This an example Tkinter Treeview in Python, which is from \nttk class make")) tree.insert("", tk.END, values=("This an example Tkinter Treeview in Python, which is from \nttk class make sure #import ttk\n also from tkinter import *", "Apologies if this was answered before but I cannot find ")) tree.pack() root.mainloop() 我必须导入Content类才能使其正常工作。

答案 3 :(得分:0)

您可以使用gradle解决此问题。

在依赖项中添加“ transitive = true”。就是这样:

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

答案 4 :(得分:0)

对我来说,这意味着我认为我下载了一个损坏的jar。 Nuke〜/ .m2 /存储库,然后重试...

答案 5 :(得分:0)

对我来说,无法访问的类位于外部 JAR 中。 该场景适合此处接受的答案。

我通过添加 JAR 作为对引发错误的模块的依赖来解决我的问题。 这意味着如果错误是从类 A 抛出的,并且没有访问类 C,我将包含类 C 的 JAR 作为依赖添加到包含类 A 的模块的 pom.xml 中。