Reputation:
I have the following in a java file (MyRtmpClient.java):
import org.apache.mina.common.ByteBuffer;
and ByteBuffer
is inside a JAR file (with the proper directory structure of course).
That jar file and others I need are in the same directory as the .java file.
Then I compile with the line:
javac -cp ".;*.jar" MyRtmpClient.java
But I get the error:
MyRtmpClient.java:3: package org.apache.mina.common does not exist
import org.apache.mina.common.ByteBuffer;
How can I include jar files in my project?
Upvotes: 46
Views: 96881
Reputation: 519
In Java 8, the option ".;*" etc. which are mentioned above did not seem to work. I tried and found that :
javac -cp '<location of jars>/*' MyRtmpClient.java
works:
<location of jar>
can be /usr/local/classes/* or /home/developer/MyProject/*
Upvotes: 2
Reputation: 471
In javac JDK 6 and above You could use (note lack of .jar):
javac -cp ".;*" MyRtmpClient.java
to quote javac - Java programming language compiler
As a special convenience, a class path element containing a basename of * is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR.
For example, if directory foo contains a.jar and b.JAR, then the class path element foo/* is expanded to A.jar;b.JAR, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of * expands to a list of all the jar files in the current directory.
Upvotes: 11
Reputation: 7028
If you have utilities find
and tr
at your disposal (e.g. you're working Linux), you could do:
javac -cp .:`find * -name "*.jar" | tr "\n" ":"` MyRtmpClient.java
All jar files in the current directory and all it's sub-directories will be added (shell command lists all jar files and puts colons as separators between them).
find * -name "*.jar"
finds and lists all jar files in hierarchy whose root is current folder,find
to the input of next command,tr "\n" ":"
replaces all newline characters with colon characters.Upvotes: 9
Reputation: 11
You cannot use -cp
with Javac. You have to use -classpath
instead (assuming the other settings are correct).
Upvotes: -2
Reputation: 61
Probably below syntax will work on windows dos command
javac -cp ".;first.jar;second.jar;third.jar" MyRtmpClient.java
Upvotes: 4
Reputation: 91
In your case, I think JAVAC can not found jars file.
Please try:
PROJECT_PATH
- lib\a.jar
- src\package\b.java
cd @PROJECT_PATH
javac -classpath lib\a.jar src\package\b.java
Upvotes: 8
Reputation: 16534
your command line is correct, but there are some considerations:
I'm assuming that the JAR file has the proper directory structure as you stated.
Upvotes: 27
Reputation: 29139
javac does not understand *.jar in the classpath argument. You need to explicitly specify each jar. e.g.
javac -cp ".;mina.jar" MyRtmpClient.java
Upvotes: 16
Reputation: 912
try including the jar file in your command line so :
javac MyRtmpClient.java ByteBuffer.jar
Upvotes: -2