Компиляция с JDK 1.8 java: не удается получить доступ к файлу класса ... файл класса не найден

хотя тот же код успешно компилировался с версией JDK 1.6, после обновления до JDK 1.8 он не будет компилироваться, говоря java cannot access ....class file ...as class file not found though it exists.

я компилирую это в IntelliJ Idea 13 IDE, попробовал как вариант перестройки, так и настроенный Ant build - результат тот же.

любая помощь будет высоко ценится.

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)

1 ответов


эта проблема решена сейчас :). Это в основном связано с настройкой пути к классу и применимо только для JDK 1.8.

например : если класс " A "имеет ссылку на класс B, А класс B реализует интерфейс, скажем "C", то javac в JDK 1.8 требует как класса B, так и интерфейса C на пути к классу, где, как и до 1.8, было достаточно только иметь класс B на пути к классу.

см. https://bugs.openjdk.java.net/browse/JDK-8055048 дополнительные информация.