简体   繁体   中英

Java import external jar file

Say I have TryJar.java in ~/jar/

public class TryJar {
    public static void hello() {
        System.out.println("Hello World!");
    }
}

then I type:

javac TryJar.java
jar cf TryJar.jar TryJar.class

I want to import this class in another source file in ~/src/ :

public class TrySrc {
    public static void main(String[] args) {
        TryJar.hello();
    }
}

I tried two ways:

1.

javac -cp ~/jar/TryJar.jar TrySrc.java

it's OK during compilation, but when I try to run it, error occurs:

java -cp .:~/jar/TryJar.jar TrySrc
Exception in thread "main" java.lang.NoClassDefFoundError: TryJar
    at TrySrc.main(TrySrc.java:3)
Caused by: java.lang.ClassNotFoundException: TryJar
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

2.

I try to include in my .bashrc and .profile the following command(I don't have .bash_profile or .bash_login):

export CLASSPATH=$CLASSPATH:~/jar/TryJar.jar

and:

source .bashrc
source .profile

But this time, it's still wrong:

javac TrySrc.java
TrySrc.java:3: error: cannot find symbol
        TryJar.hello();
        ^
  symbol:   variable TryJar
  location: class TrySrc

What should I do to include the external jar file?

EDIT: The total project contains only two directories:

~/jar/:
   TryJar.java
   TryJar.class
   TryJar.jar
~/src/:
   TrySrc.java

Jar's structure:

jar tf TryJar.jar 
META-INF/
META-INF/MANIFEST.MF
TryJar.class

My system is Ubuntu 12.04, java version:

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

in your way 1:

try changing from

java -cp ~/jar/TryJar.jar TrySrc

to

java -cp .:~/jar/TryJar.jar TrySrc

to include current directory in classpath as well to be able to load TrySrc

Its failing at compile time. try to import "TryJar" in TrySrc.java first.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM