20

Though the same code was getting to compiled successfully with JDK 1.6 version, after upgrading to JDK 1.8 it won't compile, saying java cannot access ....class file ...as class file not found though it exists.

I am compiling this in IntelliJ Idea 13 IDE, tried with both Rebuild option as well as configured ANT build - result is same.

Any help is highly appreciated.

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)
Anil Kamaraju
  • 481
  • 1
  • 4
  • 12

6 Answers6

27

This issue is resolved now :). It's basically related to class path setup and only applicable for JDK 1.8.

For ex : If class 'A' has a reference to class B and class B is implementing an interface say 'C' then javac in JDK 1.8 requires both class B as well as Interface C on the class path where as prior to 1.8 only having class B on the class path was enough.

Please refer https://bugs.openjdk.java.net/browse/JDK-8055048 for more info.

Anil Kamaraju
  • 481
  • 1
  • 4
  • 12
1

Build -> Rebuild Project worked for me

Riccardo
  • 1,083
  • 2
  • 15
  • 25
0

I had this problem when executing a function that was returning a class that i didn't had in classpath, but I just wanted to access his inner fields. e.g: container.getContent().getField() I had to import the Content class to make it work.

Gaetano Piazzolla
  • 1,388
  • 1
  • 16
  • 31
0

For me this meant I had downloaded a corrupted jar I think. Nuke ~/.m2/repository and try again...

rogerdpack
  • 62,887
  • 36
  • 269
  • 388
0

For me, the class that cannot be accessed was inside an external JAR. The scenario was suitable with the accepted answer here.

I solved mine by adding the JAR as a dependency to the module that error was thrown. Meaning if the error was thrown from class A, and class C was not accessed, I added the JAR containing class C as dependency to the pom.xml of module containing class A.

csel
  • 187
  • 2
  • 5
  • 19
-1

You can use gradle to solve this problem.

Add "transitive = true" to the dependency. Just like this:

    compile('com.***.android:***sdk:1.0.2.6@aar') {
        transitive = true
    }
dragonfly
  • 1,151
  • 14
  • 35