I am using Maven in my project, and for some reasons, some additional jars should be added manually (I have followed the step like Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project).
The package can be imported successfully. However, the compilation error happens, which indicates the package does not exist and cannot find the symbol of the used object.
I have tried the following tips but it remain unchanged:
Invalid caches / restarts
reimport
delete .idea file and .iml file
The scenario is quit similar to this one : https://intellij-support.jetbrains.com/hc/en-us/community/posts/206821195--beginner-question-including-external-jar-compile-error.
Please see the following sample images. It may run successfully but cannot be compiled well.
The reason is that when you add a library manually via IntelliJ, only IntelliJ knows about them and when you compile your code using Maven, it can't be find by Maven because Maven only searches for dependencies you defined in pom.xml.
You should install your libraries in your (at least) local maven repository and add them as a normal dependency in your pom.xml. Then you don't need to add them manually in IntelliJ.
You should follow the steps mentioned at Guide to installing 3rd party JARs
Update:
Also you should note that if you're working as a team, you should install this on the local maven repository of all developers (which is not practical). The best solution is to install a Maven repository (e.g. Nexus, Artifactory or Archiva) in a server on your local network and upload your private jar files on those servers. Then all developers can define the address of the local Maven repository server in their local Maven settings and use artifacts/libraries from that servers. Plus it works as a local cache/proxy to fetch any Maven artifacts and prevents unnecessary calls to public maven repositories.
I am not quite sure what has happened to my IntelliJ recently but any new projects created or checked out from a repo are unable to resolve the dependencies from maven.
Resulting in lots of unresolved class symbols.
Interestingly projects that have already existed work fine and IntelliJ can resolve the dependencies imported by Maven.
So something has happened within the space of the last two weeks that has caused this issue. I haven't touched the Intellij config
This is what I have done to troubleshoot:
clear cache in intellij
mvn clean and install
reimport through maven on intellij
download sources and documentation
remove maven pom and re-add it
checked m2/repository cache, which contains the libraries
IntelliJ version - 2018.2
Any ideas?
In Intellij IDEA 2017.2, I am trying to import an existing multi-module Maven project which builds fine outside the IDE via Maven. When the import is complete, I noticed that in one of the Maven submodules, a symbol is unresolved, lets call this submodule submodule-problem. The unresolved symbol is a class that is defined in another submodule, lets call that submodule-other. The thing is that in submodule-problem, other classes defined in other submodules at the level of submodule-other are found ok(those submodules are defined as dependencies in the pom file of submodule-problem). Furthermore, submodule-other isn't declared as a dependency in submodule-problem's pom file. But I should NOT have to do this because as I mentioned mvn clean install -Dmaven.test.skip=true works fine. So does mvn test-compile. I am using the latest Maven 3.5.0 and have instructed IDEA to use the same for the said imported project in the project's Maven settings. Note: I don't have permission to show the code or concerned POM files.
Things I've tried to resolve the issue so far are:
Invalidate caches and restart IDEA, many times
Re-import as Maven project, many times
Delete the .idea folder and all *.iml files from the said project and re-import as Maven project, a few times
Delete IDEA's system preferences folder and retry all previous steps again many times (this step was painful as I had to install all my plugins and configure IDE setting over again)
Imported the same project into Eclipse-Oxygen and saw that it doesn't have any issues with the importing of the project.
I have solved the problem. It turns out that it wasn't any problem with the IntelliJ IDEA IDE (at least I think not). In production, my top level project is a child project of another parent Maven project and so it's version in it's pom file references the parent's version using ${project.version}. Whereas in development it IS the parent with the lower level projects being it's own children. So in all pom.xml files, where ${project.version} was being used by my top level project to refer to the production parent and also in the children poms where they were referring to my top level project as their parent, I changed it to something like a literal like 1.0.0-SNAPSHOT and all problems went away, I didn't even have to re-import the project into the IDE.
Now, as I mentioned in the original post, even without having to do this, Maven had no problem building the project. I'd love to know why if anyone knows. Perhaps the IDE needs me to do this because it is trying to enforce some best practice? I was led to the solution by watching idea.log where it complained about some POMs being invalid and indeed in those pom files the version tag had a red squiggly underline.
I am using the aws Java plugin for Eclipse. I didn't have any issues during the installation process but after I used the plugin to create a sample DynamoDB project, I got this error
Missing artifact com.amazonaws:aws-java-sdk-cl....watchmetris.jar:1.11.123(click for 156 more...).
clicking didn't do anything.
I thought the error was due to the fact that I didn't install that jar during the installation process - I only installed "AWS Toolkit for Eclipse".
I went back into Eclipse and installed every non optional plugin from the aws(see below)
After I restarted Eclipse and tried creating my DynamoDB project again, I get a different failed to read artifact descriptor error(see below)
Has anyone experienced this issue before or know what the solution is? Elastic load balancer should be apart of AWS Toolkit which I installed. I've tried removing and reinstalling the aws plugin but I'am still getting missing artifact errors. I've looked at other threads on AWS plugin for Eclipse as well.
For anyone dealing with this issue with this issue, I got it to work! I can't really explain why it works though - maybe Maven's way of resetting some setting.
What I did was go inside pom.xml, the configuration file for Maven, and into the Dependencies tab. This is what I saw
I reasoned that the missing artifact was in the aws-java-sdk jar so I removed it. I then deleted the project from disk and created a new one. The new project came with the correct dependencies and no compiler errors!
The problem is not your AWS Toolkit, it's a problem of your Maven. Please try to create a project with Maven to check if Maven's setting is correct. If Maven is correct, please see your pom file in XML and check the dependency is correct? If you cannot create Maven project, it's means that your Maven setting is wrong somewhere!
I received a similar error "failure to transfer com.amazonaws:aws-java-sdk ...". The pom resolution could work, but here's another solution. So, when you start an aws project for the first time, certain artifacts necessary for maven are stored under .m2\repository\com\amazonaws.
What happened to me was that when I deleted one of my aws projects, I also deleted the resources being referred to which was somewhere in the aforementioned directory. And because the directory existed, eclipse's aws toolkit didn't bother downloading it again. I solved it by just deleting the $home.m2\repository\com\amazonaws directory. So next time I created a new aws project, it had to download all the artifacts.
I am starting to configure my development environment and I am using Spring Tool Suite 2.8.1 along with m2E 1.01.
As far as I can tell, since this is a Maven Project (my first), my Maven POM is dictating (along with m2E smarts) my project build configuration and dependencies.
What I would like to know is why my IDE is displaying Java Build Problems that read "Archive required for library library/path/somejar.jar cannot be read or is not a valid zip file" when I can see the jars in my .m2 repository?
All the errors pertained to commons-logging:1.1.1 which I excluded in my parent-pom. This was a transistive dependancy via spring-context-support:3.0.5. I excluded that library from my build and now the errors pertain to the spring-context-support library.
I have attached a screenshot to illustrate.
Indeed IDEs often cache the local repository (Eclipse does something similar, and I have to relaunch Eclipse).
One ugly maven behavior you might encounter is that if you declare a dependency before you actually install it, maven will create an empty version of the missing dependency (folder with metadata but no jar), and you will have to manually clean your .m2 repository.
Third, an installed archive (jar...) can get corrupted, so try to open it with any archive tool (7zip...) to test it, and delete the whole folder if the archive is corrupted.
In my case I had to manually delete all the files in .m2\repository folder and then open command prompt and run mvn -install command in my project directory.
I was using Eclipse as IDE and I was getting very same error. I had to do Project->Maven->Update Project. Select all the checkboxes below except "offline" esp. the one "Force update of snapshots/releases" and click OK. Did the Clean Build for the Project again.
Delete corrupted files from your local .m2 repository and Ctrl+F5 (Update Maven Project) in Eclipse/STS. It'll download and install these files.
This worked for me.
Close Eclipse
Delete ./m2/repository
Open Eclipse, it will automatically download all the jars
If still problem remains, then right click project > Maven > Update Project... > Check 'Force Update of Snapshots/Releases'
Below Steps resolved my issue.
Go to ./m2/repository folder.
Go to respective archive error folder.
Verify any zip file is exist.
delete error name folder.
Now come to Eclipse Project - Right Click - Maven - > Update Project.
Above trick works for me.
For Googlers:
In my case I had accidentally manually added a Java class to the build path while poking around Eclipse. By taking a look at the 'Configure Build Path...> Libraries I removed the culprit class and now only have the
JRE System Library
Maven Dependencies
and nothing is complaining.
In my case I tried all the tips suggested but the error remained. I solved changing with a more recent version and writing that in the pom.xml. After this everything is now ok.
I deleted the local maven repository.
Then just rightclick the project -> Maven -> Update Project...
Select all concerned projects and click OK.
I was facing the same problem with my project.
My project was not able to find this archive: -
C:\Users\rakeshnarang\.m2\repository\org\hibernate\hibernate-core\5.3.7.Final
I went to this directory and deleted this folder.
Went back to eclipse and hit ALT + F5 to update the project.
The jar file was downloaded again and the problem was solved.
You should try this.
This happens when Eclipse screws up. To fix it, delete all the files in:
workspace/.metadata/.plugins/org.eclipse.jdt.core
Remove maven dependenices from build path
I faced this problem. I had "Archive for required library spring-boot-devtools cannot be read or is not a valid ZIP file" and the solution was like that:-
1- determine the dependencies names that have problems(for may case it is spring-boot-devtools).
2- close eclipse.
3- search in your .m2 file on these dependencies(by name).
4- delete these folders.
5- reopen eclipse and let maven rebuild your dependencies again.
Ok, I had the same problem with STS on a mac and solved it by deleting all the files in repository folder and from the STS IDE click on the project and then Maven -> Update project. Give it a couple of minutes to download all the dependencies and the problem is solved.
I face with the same issue. I deleted the local repository and relaunched the ID. It worked fine .
Just had this problem on Indigo SR2. It popped up after I removed a superfluous jar from the classpath (build path). Restarting Eclipse didn't help. Added back the jar to the build path...error went away. Removed the jar once again, and this time I was spared from another complaint.
none of the solutions above helped my problem. I've resolved it by deleting all files in {projectworkspace}/.metadata folder AND in {location}/.m2 folder and let eclipse download every single thing again. Hope this helps someone, cheers!
When I got an error saying "archive for required library could not be read," I solved it by removing the JARS in question from the Build Path of the project, and then using "Add External Jars" to add them back in again (navigating to the same folder that they were in). Using the "Add Jars" button wouldn't work, and the error would still be there. But using "Add External Jars" worked.
This could be due to you have added spring-licence.txt file to your web app libraries.
I had similar issue and resolved after removing that text file. In libraries it will expect jar file only.
Alternatively, below commands also worked for me:
mvn -s settings.xml eclipse:clean
mvn -s settings.xml eclipse:eclipse
In case of VSCode, follow the below steps:
Navigate to the respective folder that contains the corrupted jar
Delete just the jar
mvn clean
mvn compile
That worked for me.
Read the issue in Problems section,identify which dependency not able to read, then go the maven repository .m2\repository ->
1)check the dependencies and delete it from the folder
2)go to STS/Eclipse -> click on maven -> update project ->select the force update of snapshots/releases and click on ok.
or
delete the dependencies from the .m2/repository and rebuild the maven --> update the maven project
In my case, I just had to remove the following 2 lines from proguard.cfg:
-keep class android.support.v4.** { * ; }
-dontwarn android.support.v4.**
Yes, I know that the question refers to the Spring Tool Suite but:
Spring Tool Suite is based on Eclipse (the IDE I am currently using for ADT).
Proguard is a Java obfuscator that can be used for any project, not just Android
I tried all the suggested answers and tips in the thread and none worked for me, until I removed the references to said libs.
I hope this helps someone.
Delete your C:\Users\PC\.m2** folder
and update maven project