Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To Check Dependencies Between Jar Files?

I recently have taken the support and programming of a web system written in JSF. The code is kind of messy and redundant, and yes, no documentation exists.

The system has over 40 jar libraries, and most of them are redundant due to old versions and testing. To remove one jar, I must check that it's not imported in the code, so I searched the code for the jar import path (I'm using IntelliJ IDE), made sure that it's not used, and removed it.

However, after compiling the code, a number of run-time errors occurred during testing. I figured out that I removed some jars which are used by other existing jars.

The problem, how do I make sure before removing a jar that it's not used by another jar/java class?

Despite that jars have compiled classes, the compiled classes do have the import path of required libraries. But I can't search them with IntelliJ (does not search inside jars files).

The only way that I'm doing now is to test the system every time I remove a jar and see if I can crash it! This is totally not an easy way due to the huge number of features to be tested.

I wish that there is a tool where I can submit a number of java files/jars, and it displays the dependencies between them.

like image 223
Saleh Al-Zaid Avatar asked Apr 24 '09 16:04

Saleh Al-Zaid


People also ask

Does JAR file contain dependencies?

Normally, when we package a project into a jarW file, the jar file doesn't contain its dependencies, so the dependency jar files would need to be included in the classpathW in order to execute a class in the project's jar file that uses one of the dependencies.

How do you find transitive dependencies?

First go to View → Tool Windows → Maven, to make sure that the Maven window is visible. The top-level elements in the tree are your direct dependencies, and the child elements are the transitive dependencies.

What is a jar with dependencies?

The value jar-with-dependencies tells Maven to build a JAR file with dependencies which is another term for a Fat JAR. The executions XML element tells Maven which Maven build phase and goal this Maven plugin should be executed during. The maven-assembly-plugin should always be executed during the package phase.

Where does Maven get dependencies from?

Maven's local repository is a directory on the local machine that stores all the project artifacts. When we execute a Maven build, Maven automatically downloads all the dependency jars into the local repository. Usually, this directory is named .


1 Answers

I know that there was a tool coming out of the JBoss project called JBoss TattleTale, might be worth taking a look:

http://www.jboss.org/tattletale

like image 52
Uri Avatar answered Oct 13 '22 17:10

Uri