Eclipse error: indirectly referenced from required .class files?
I got an er开发者_StackOverflow中文版ror in Eclipse. What does this error message means:
The type iglu.ir.TermVector cannot be resolved. It is indirectly referenced from required .class files
It means: "A class that you use needs another class that is not on the classpath." You should make sure (as Harry Joy suggests) to add the required jar to the classpath.
This is as likely a matter of Eclipse's getting confused as it is an actual error. I ignored the error and ran the web service whose endpointInterface it complained about, and it ran fine, except for having to deal with the dialog every time I wanted to run it. Just another opaque error that tells me nothing.
It happens to me sometimes, I always fixed that with "mvn eclipse:clean" command to clean old properties and then run mvn eclipse:eclipse -Dwtpversion=2.0 (for web project of course). There are some old properties saved so eclipse is confused sometimes.
I had this error because of a corrupted local maven repository.
So, in order to fix the problem, all I had to do was going in my repository and delete the folder where the concerned .jar was, then force an update maven
in Eclipse.
It sounds like this has been a known issue (Bug 67414)that was resolved in 3.0 ... someone has commented that it's occurring for them in 3.4 as well.
In the mean time, the work around is to remove the JRE System Library from the project and then add it back again. Here are the steps:
Go to properties of project with the build error (right click > Properties)
View the "Libraries" tab in the "Build Path" section
Find the "JRE System Library" in the list (if this is missing then this error message is not an eclipse bug but a mis-configured project)
Remove the "JRE System Library"
Hit "Add Library ...", Select "JRE System Library" and add the appropriate JRE for the project (eg. 'Workspace default JRE')
Hit "Finish" in the library selection and "OK" in the project properties and then wait for the re-build of the project
Hopefully the error will be resolved ...
This error occurs when the classes in the jar file does not follow the same structure as of the folder structure of the jar..
e.g. if you class file has package com.test.exam and the classes.jar created out of this class file has structure test.exam... error will be thrown. You need to correct the package structure of your classes.jar and then include it in ecplipse build path...
I got this exception because eclipse was working in a different version of jdk, just changed to the correct, clean and build and worked!
I had an interesting case of this problem with Eclipse 4.4.2. My project (P1) referenced an external class (project P2) with two methods with the same name but different argument types:
public static void setItem(Integer id) …
public static void setItem(Item item) …
The type Item
was contained in a third project P3, which I did not want to be visible here. P1 called only the first method:
ExternalClass.setItem(Integer.valueOf(12345));
So the second method, which used the Item
class, was not used, and it is true that P3 was not in the compilation classpath – why should it if it is not used.
Still Eclipse told me
The type ...Item cannot be resolved.
It is indirectly referenced from required .class files
Compiling from the command line did not produce any such issues. Changing the name of the second method (unused here!) made the problem go away in Eclipse, too.
What fixed it for me was right clicking on project > Maven > Update Project
If you still can not find anything wrong with your setup, you can try Project -> Clean and clean all the projects in the workspace.
EDIT: Sorry, did not see the suggestion of verbose_mode ... same thing
For me, it happens when I upgrade my jdk to 1.8.0_60 with my old set of jars has been used for long time. If I fall back to jdk1.7.0_25, all these problem are gone. It seems a problem about the compatibility between the JRE and the libraries.
I got the error when I just changing some svn settings and not anything in the code. Just cleaning the projects fixed the error.
In my case ,I created a project and made its minSdkVersion=9
and targetSdkVersion=17
. I used automatically generated libs/android-support-v4.jar
. I also had to make use of ActionBarActivity
using android-support-v7-appcomapt.jar
. So I just copied the android-support-v7-appcompat.jar
file from android-sdk/extras/andrid/support/v7/appcompat/libs
folder and pasted it to my project libs
folder. And this caused the above error.
So basically,I needed to put android-support-v4.jar
file from android-sdk/extras/andrid/support/v7/appcompat/libs
as well to my project libs
folder. As per my knowledge the v7.jar
file had dependencies on v4.jar
file. So ,it needed it own v4.jar
file,instead of my project,automatically created v4.jar
file.
Quickly and Simply I fixed it this way ( I use ADT version: v21.0.0-531062 on Windows XP home edition)
- Opened manifest file.
- Changed the Existing project minSdkVersion to the same value as maxSdkVersion ( advise: it may be good to create a New project and see what is it's maxSdkVersion )
- Save manifest file.
- Right Click the project and select Build Project.
- From top menu: Project - Clean.. - check Only the relevant project, below I checked Start a build immediately and Build only the selected projects and OK.
- open the java file - NO red errors anymore !
- Back to step 1 above and changing Back minSdkVersion to it's Original value (to supoprt as many Android version as possible).
It worked BUT the problem returns every few days. I do the same as above and it solves and lets me develop.
In addition to the already suggested cause of missing a class file this error can also indicate a duplicate class file, eclipse reports this error when an class file on the build path uses another class that has multiple definitions in the build path.
Since you give us very little details, most likely what you did, which is an incredibly easy mistake to make, is that instead of heading to
Build Path > Configure Build Path > Projects
and adding your additional project folder from there, instead you went to
Build Path > Configure Build Path > Libraries
and added your project folder from there instead.
This is most definitely the case if your code is all correct, but upon automatically reorganizing imports via the ctrl+space
shortcut , instead of your import statements referring to com.your.additionalproject, your references all point to bin.com.your.additionalproject.
Note the bin. Meaning that you -are- indirectly referring to your class by treating your other project folder structure as a library, making your IDE doing all the wokr of finding the exactly binary class you're referring to.
To correct this, remove the folder from the Libraries, and instead add it under the Projects tab, and reorganize your imports. Your project should work fine.
When i use a new eclipse version and try to use the previous workspace which i used with old eclipse version, this error occured.
Here is how i solve the problem:
Right click my project on Package Explorer -> Properties -> Java Build Path -> Libraries -> I see an error(Cross Sign) on JRE System Library. Because the path cannot be found. -> Double click the JRE System Library -> Select the option "Workspace Default JRE" -> Finish -> OK. -> BUM IT IS WORKING
FYI.
In my case it was a result of my adding a new dependency to my pom.xml
file.
The new dependency depended on an old version of a library (2.5). That same library was required by another library in my pom.xml
, but it required version 3.0.
For some reason, when Maven encounters these conflicts it simply omits the most recent version. In Eclipse when viewing pom.xml
you can select the "dependency hierarchy" tab at the bottom to see how dependencies are resolved. Here you will find if the library (and thus class) in question has been omitted for this reason.
In my case it was as simple as locking down the newer version. You can do so by right-clicking the entry - there is an option to lock it down in the context menu.
For me none of the solutions above worked. What worked for me was to select all the code in the class, then convert it to a comment, save, then convert it back to normal text, the error was gone.
In my case the problem was "javax.ws.rs.webapplicationexception cannot be resolved" in execution when starting the web application in Tomcat.
Solution adding the following library (Maven):
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
right click on your project->properties->maven->active maven profile(comma seperated) then in that box write pom.xml and check the resolve dependencies from workspace project
Point the JRE in the Build path to a JDK. That worked for me.
精彩评论