Eclipse error: indirectly referenced from required .class files?
Asked Answered
F

24

216

I got an error in Eclipse. What does this error message means:

The type iglu.ir.TermVector cannot be resolved. It is indirectly referenced from required .class files

Ferreous answered 5/4, 2011 at 4:21 Comment(5)
Add jar that contains iglu.ir.TermVector in source path of your project.Signalment
If you are sure the class is provided, try a clean and refresh on all of your projectsSholokhov
This happened to me because of transitive dependencies in my jarsTwigg
exactly! this jar needs to be present in the pom.xml dependencies.Pencil
I solved it by adding some jar files to the java project.Benita
L
213

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.

Lefevre answered 5/4, 2011 at 5:39 Comment(6)
In you're trying to remove classes in particular, check parent classes for reference to the missing type. If that's not always what this message means, it's what it means probably most of the time.Funiculus
@Arne, Why does it say indirectly referenced then? Shouldn't it have said that it is not referenced at all?Jurisconsult
@Jurisconsult that would not be true. It's not your code that is directly referencing this type, but rather something your code uses, so the dependency from your code to that type is "only" transitive, but it is there. "Indirectly" tells you where to look.Pebbly
In my case the class was in the classpath but apparently Maven downloaded the artifact incorrectly. Go to the local maven repository ~/.m2/repository/path-to-the-dependency-jar, delete the folder and then update your project via "Maven -> Update Project" to download the dependency again. That did the trick for me.Techno
This is wrong. I have the class on my classpath and still get this error.Fibre
Then your classpath is probably different from what you think.Lefevre
G
25

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.

Gangboard answered 5/12, 2012 at 14:53 Comment(3)
It's also not in a jar. It's in one of the projecs that's included in all the included projects where it's of any relevance.Gangboard
I've experienced this problem in eclipse, yet building via maven worked fine. The fix was to delete and re-import the project in the eclipse workspace that contained the required classes.Tamera
This may happen sometimes, but I have run into errors that give the same response, and the project can't build.Conlan
C
21

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.

Coccyx answered 5/10, 2017 at 10:3 Comment(2)
This worked for me, while the above all didn't. The problem occured when one of my team mates updated the version of a repository from pom.Waltraudwaltz
Likewise, this was the only solution that worked for me. After deleting the version(s) that appeared to be caused the problem, mvn clean install worked fine.Corona
A
20

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.

Amused answered 25/10, 2013 at 13:7 Comment(5)
I cleaned the project (from Project->Clean...) and it worked.Jeanene
mvn eclipse:clean and/or mvn eclipse:eclipse seem to be the magic trick to make it work.Apyretic
This helped me in Intellij IDEA with Maven also.Runkel
Note that Maven clean phase is in its own clean Maven Lifecycle - that's separate from default lifecycle, which may have other phases you run more regularly (ex: test, or install, do not run clean beforehand, because clean is not in their default Lifecycle).Runkel
I had a similar problem, but unrelated to IntelliJ. mvn eclipse:clean initially made the problem far worse. To fix it, I deleted the project from eclipse (do NOT delete the source files) and then re-imported the project using import/maven.Atilt
C
16

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 ...

Catalepsy answered 16/9, 2015 at 7:8 Comment(3)
Yes.I had the same problem with spring-web-3.0.1.RELEASE.While it was registered as a dependency in pom.xml , and already working as a dependency in some references , when I made a http.csrf().disable().cors().disable().httpBasic().and().authorizeRequests() .antMatchers(PUBLIC_MATCHERS).permitAll().anyRequest().authenticated(); It broke down.Then I downloaded the jar file and import it the traditional manual way.Corrosion
I had the problem in Eclipse 4.26.0 (!) and could fix it following your advice.Lyford
Addendum to my previous comment (delayed because of an SO downtime): The problem occurred after I interrupted a longer build and then restarted it. Nothing could be achieved by cleaning all projects in my workspace, nor by running a Maven project update on all projects.Lyford
S
5

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...

Shadoof answered 17/7, 2013 at 12:29 Comment(0)
F
5

What fixed it for me was right clicking on project > Maven > Update Project

Fireboard answered 20/11, 2018 at 1:12 Comment(0)
M
4

I got this exception because eclipse was working in a different version of jdk, just changed to the correct, clean and build and worked!

Maurizia answered 18/1, 2016 at 21:29 Comment(0)
L
4

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.

Levelheaded answered 13/7, 2018 at 8:56 Comment(1)
I am experiencing exactly the same problem with Eclipse Photon Release (4.8.0)Morales
I
3

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

Incubator answered 30/7, 2013 at 11:48 Comment(0)
T
2

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.

Terchie answered 27/9, 2016 at 21:22 Comment(0)
F
1

I got the error when I just changing some svn settings and not anything in the code. Just cleaning the projects fixed the error.

Frustration answered 12/9, 2013 at 22:25 Comment(0)
S
1

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.jarfile,instead of my project,automatically created v4.jar file.

Selfdeception answered 18/12, 2013 at 9:17 Comment(0)
A
1

Quickly and Simply I fixed it this way ( I use ADT version: v21.0.0-531062 on Windows XP home edition)

  1. Opened manifest file.
  2. 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 )
  3. Save manifest file.
  4. Right Click the project and select Build Project.
  5. 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.
  6. open the java file - NO red errors anymore !
  7. 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.

Abolish answered 28/3, 2014 at 2:16 Comment(0)
F
1

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.

Flugelhorn answered 3/9, 2020 at 19:50 Comment(0)
S
0

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.

Sizable answered 20/8, 2013 at 1:0 Comment(0)
C
0

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.

Carbazole answered 5/9, 2015 at 7:34 Comment(0)
S
0

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.

Salzman answered 18/2, 2016 at 10:46 Comment(0)
D
0

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.

Djebel answered 13/10, 2017 at 20:54 Comment(0)
K
0

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>
Kianakiang answered 5/4, 2021 at 16:36 Comment(0)
D
0

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

Demount answered 4/4, 2022 at 18:44 Comment(0)
M
0

I ran maven clean (only clean) and it solved the error

Monson answered 17/3, 2023 at 18:2 Comment(0)
B
0

Eclipse menu

I always use this option when importing projects to fix problems like these

Right click on the project > Maven > Update project

The desired project must be checked on the "Update Maven Project" window and the "Clean projects" option

Bulb answered 7/2 at 14:41 Comment(0)
I
-1

Point the JRE in the Build path to a JDK. That worked for me.

Ingest answered 14/8, 2018 at 11:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.