Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use a class from JAR in eclipse

I have two jar files - jar1 and jar2. Both of them are located in C:\Eclipse projects\ and I have added the paths to both of them to the Environment Variable CLASSPATH as follows

.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;C:\Eclipse projects\stdlib.jar;C:\Eclipse projects\algs4.jar

the ".;" at the beginning were there so I left them. Then I added the jars to the project from their location C:\Eclipse projects\ and they showed up as Referenced Libraries. However, when I try to instantiate a class from the jars it does not recognize it. I am also not able to import the jar (import jar1).

After I tried adding a lib folder in the project and I added the jars there. After, I added them as references once again (so not they appear twice in the Referenced Libraries), however, I am still not able to use the inner classes. Any help will be much appreciated.

UPDATE: Something must be wrong on my end. None of the suggestions worked for me. Here is a video with all the steps: screencast.com/t/gC81YzCsLY0e

RESOLUTION In my project I had a package called TestProject and it seems that those jars needed a default package. After deleting the TestProject package and using a defaultPackage everything worked correctly after adding external JARs as explained below.

like image 519
checho Avatar asked Aug 27 '12 19:08

checho


People also ask

How do I run a specific class from a jar file?

To run an application in a nonexecutable JAR file, we have to use -cp option instead of -jar. We'll use the -cp option (short for classpath) to specify the JAR file that contains the class file we want to execute: java -cp jar-file-name main-class-name [args …]

How do I view a class in a jar file in Eclipse?

Solution. Select the project in the Package Explorer, and then select Project→ Properties to open the Properties dialog. Click the Libraries tab in this dialog, click Add External JARs for . jar files or Add Class Folder for .

How do I import a class into Eclipse?

In Eclipse, to import a single class, you may clicked on the class and press shortcut key “ Ctrl + Space ” to prompt all the available classes to import. However, if you copied a Java source code from somewhere and more than 20+ classes are not import, are you going to press “ Ctrl + Space ” one by one?


3 Answers

I've got the same problem as you today, And no answer from the web can solve it. However, I fixed it at last.

In fact, there is nothing wrong with the setup, it is right to import those jars through "Add External JARs". The real problem is the location/package of you java code. I found that you have to put your .java file in the default package. For example, you will get errors if you put your java code in a package like com.xxx.yyy.ccc, below is an image which shows the right location/package you should use(see WTF.java). After doing that, you program will be able to run.

enter image description here

However, that is how i fixed my problem, i'm not sure that could work for everyone..

like image 71
H Lai Avatar answered Oct 10 '22 04:10

H Lai


In eclipse, right click on a project->Propeties->Java Build Path->Add External JARs (Add JARs if the jar is inside the project's folder) and then choose your jar file. From now you can use the inner classes of the jars you added. Eclipse will import them when you'll start using them.

like image 25
assafmo Avatar answered Oct 10 '22 03:10

assafmo


Why don't you use these two JARs—— stdlib-package.jar and algs4-package.jar.

And below the code page(http://algs4.cs.princeton.edu/code/)

Q. If I use a named package to structure my code, the compiler can no longer access the libraries in stdlib.jar or algs4.jar. Why not?

A. The libraries in stdlib.jar and algs4.jar are in the "default" package. In Java, you can't access classes in the default package from a named package. If you need to use our libraries with a named package, you can use these package versions: stdlib-package.jar and algs4-package.jar.

Warning: if you are taking Princeton COS 226 or Coursera, Algorithms, Part I or II, you must use the default package verison of our libraries to facilitate grading.

Showing my test success: Showing my test success

like image 30
MorningFung Avatar answered Oct 10 '22 03:10

MorningFung