How do I find the packages defined in a jar?

前端 未结 5 1224
醉酒成梦
醉酒成梦 2020-12-17 18:05

I have a bunch of JAR files (from a maven2 project) and maven reports some package could not be found (org.openanzo.client.jena to be exact). I want to dig into the JAR file

相关标签:
5条回答
  • 2020-12-17 18:37

    jar tvf filename.jar will show you the contents of a jar file without requiring you to extract it.

    But I think that maybe what you are really trying to do is find the right coordinates for the dependency that you are missing, since obviously none of the ones you have right now are supplying the package you are looking for (in other words, checking their contents is not likely to help you).

    I confess that the first place I would suggest to check is Sonatype's public Nexus instance. A search for your example turns up nothing, though. Usually that means the project is not trying to get their stuff into Maven Central or other major repositories (which is okay), so you have to resort to a web search. Usually the first two sections of the package tell you where to look (openanzo.org in your case).

    0 讨论(0)
  • 2020-12-17 18:41

    If you are on Linux or a Mac, you could go to the terminal at the root of the folder containing your JARs and type:

       # grep -ri "org.openanzo.client.jena" *
    

    It will return a recursive list of all JAR files that contain that package name. If it returns 0 results, then none of those JARS contain that package.

    If you wanted to do a more exhaustive search, you could unJAR the JAR files. The directory structure and .class files will be organized by packages in folders.

      # jar xvf filename.jar
    

    If you are on Windows, you can unJAR a JAR file using a tool such as 7Zip.

    0 讨论(0)
  • 2020-12-17 18:42

    Assuming maven downloaded the jar files,the files will be loaded in to a local repository. You could use maven browser that comes packaged with Eclipse to browse and search for artifacts in your repository.(usually in userdir/.m2/repository)

    Note:You can explore your repository directly if you want. You will understand the packages that were downloaded. But I suggest using the plugin.

    If you are using Intellij IDEA, each project contains a tree called External Library that allows you to search and explore your libraries.

    0 讨论(0)
  • 2020-12-17 18:44

    .jar files are just ZIP compressed archives, rename it to zip, open it with your favourite unzip programm, and traverse through the directory.

    If you add the jar file to a eclipse project, you can traverse through the lib in th project explorer.

    HTH

    0 讨论(0)
  • 2020-12-17 18:47

    @Carsten you do not have to rename a .jar file to .zip. You can directly open the jar file in winzip/or other zip utility (assuming windows OS)

    @ashy_32bit try using "jar class finder" eclipse plugin from IBM. Simple plugin for finding classes (if you know the class name)

    OR

    as carsten suggested... set the jar files as lib files and manually look it up

    OR

    create a batch file called a.bat (where you have all your jar files directly under a single folder) and paste the following 4 lines

    @ECHO OFF
    dir /b *.jar > allJarFilesList.txt
    FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt
    FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B
    

    NOTE the "com/sun" in the last line.. it is hard coded, you can pass as argument as well...

    I know this is very basic form and can be improved "a lot" like looking up in various sub directories.

    hope this helps :-)

    0 讨论(0)
提交回复
热议问题