Discussion:
how to compile open source classes
(too old to reply)
a***@hotmail.co.uk
2012-12-20 10:52:40 UTC
Permalink
Hi, I have downloaded an open source library containing .java and .class files.

I'm a complete java novice but all I want to do is compile this library into a .jar file, so I can effectively call it from a command line, as I have done before at http://undocumentedmatlab.com/blog/jboost-integrating-an-external-java-library-in-matlab/

If anyone can tell me what to do in order to build a .jar file I'd be very grateful.
John B. Matthews
2012-12-20 14:10:50 UTC
Permalink
Post by a***@hotmail.co.uk
Hi, I have downloaded an open source library containing .java and .class files.
I'm a complete java novice but all I want to do is compile this
library into a .jar file, so I can effectively call it from a command
line, as I have done before at
http://undocumentedmatlab.com/blog/jboost-integrating-an-external-java-library-in-matlab/
If anyone can tell me what to do in order to build a .jar file I'd be very grateful.
As you are using an open source library, why not simply link to the
project? If it doesn't already contain a JAR or documented build target,
you might want to start with the tutorial:

<http://docs.oracle.com/javase/tutorial/deployment/jar/>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
Lew
2012-12-20 18:59:24 UTC
Permalink
Post by John B. Matthews
Post by a***@hotmail.co.uk
Hi, I have downloaded an open source library containing .java and .class files.
I'm a complete java [sic] novice but all I want to do is compile this
library into a .jar file, so I can effectively call it from a command
Compile and jar are two separate steps.
Post by John B. Matthews
Post by a***@hotmail.co.uk
line, as I have done before at
http://undocumentedmatlab.com/blog/jboost-integrating-an-external-java-library-in-matlab/
I do not know MatLab, but assuming it just uses standard JARs I can offer some suggestions.
Post by John B. Matthews
Post by a***@hotmail.co.uk
If anyone can tell me what to do in order to build a .jar file I'd be very grateful.
As you are using an open source library, why not simply link to the
project? If it doesn't already contain a JAR or documented build target,
<http://docs.oracle.com/javase/tutorial/deployment/jar/>
What he said, but allow me to summarize. Suppose you don't want to use their JAR, but
you really want to do just what you said - create your own JAR.

There are three steps you asked for:
"compile this library into a .jar file, so I can effectively call it from a command line"
- Compile
- Jar
- Execute

In command-line terms (bravo to you!) these commands are:
- javac
http://docs.oracle.com/javase/7/docs/technotes/guides/javac/index.html
- jar
http://docs.oracle.com/javase/7/docs/technotes/guides/jar/index.html
- java
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html

all of which can be controlled via Ant.

javac: .java => .class
jar: .class => .jar
java: {.class, .jar} => magic

All these are documented! Isn't that incredible?
http://docs.oracle.com/javase/7/docs/index.html

Now, if you trust the .class files you get from Joe Opensource, you have no need to
compile the .java files.

If you compile the .java files, you have no need for the .class files.

So choose one of two steps to get a bunch of .class files:
- Use the downloaded .class files, or
- Compile your own.

Don't mix and match.

So now you have a set of .class files. Let's pretend that they're in the standard directory-
based layout for Java .class files, rooted at classpath element **/opensource/build/, and that
the packages all start at org.opensource.magic.

.../opensource/build/org/opensource/magic/Foo.class
.../opensource/build/org/opensource/magic/util/Util.class

and so on.

Now you want to JAR them. I'll assume you "cd" into ".../opensource/". There are a few ways to
build the JAR.

$ jar cmf path/to/myManifestFile opensource.jar -C build .

That manifest file has to specify the main class or you won't be able to run the JAR from the
command line.

Alternatively, you can use the jar "-e" option to specify the main class.

You also have to set the "Class-Path:" in the manifest, or you will not be able to run the JAR
file if it needs certain things in its classpath that are not already in the JAR. Running from a
JAR file forces the "java" command to ignore all other classpath information.

To run that JAR file use "java -jar opensource.jar".
--
Lew
Loading...