This tutorial guides you through setting up a simple Java project in IntelliJ IDE on macOS and demonstrates usage of the MXNet Java APIs.
To use this tutorial you need the following pre-requisites:
Run the following commands to install the prerequisites on MacOS.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew tap caskroom/versions
brew cask install java8
brew install maven
brew install opencv
Run the following commands to install the prerequisites on Ubuntu.
wget https://github.com/apache/incubator-mxnet/blob/master/ci/docker/install/ubuntu_core.sh
sudo ./ubuntu_core.sh
wget https://github.com/apache/incubator-mxnet/blob/master/ci/docker/install/ubuntu_scala.sh
sudo ./ubuntu_scala.sh
Note : You might need to run chmod u+x ubuntu_core.sh
and chmod u+x ubuntu_scala
before running the scripts.
The ubuntu_scala.sh
installs the common dependencies required for both MXNet Scala and MXNet Java packages.
Step 1. Install and setup IntelliJ IDEA
Step 2. Create a new Project:
From the IntelliJ welcome screen, select "Create New Project".
Choose the Maven project type.
Select the checkbox for Create from archetype
, then choose org.apache.maven.archetypes:maven-archetype-quickstart
from the list below. More on this can be found on a Maven tutorial : Maven in 5 Minutes.
click Next
.
Set the project's metadata. For this tutorial, use the following:
GroupId
mxnet
ArtifactId
javaMXNet
Version
1.0-SNAPSHOT
Review the project's properties. The settings can be left as their default.
Set the project's location. The rest of the settings can be left as their default.
After clicking Finish, you will be presented with the project's first view.
The project's pom.xml
will be open for editing.
Step 3. The Java packages are currently available as nightly builds on Maven. Add the following Maven repository to your pom.xml
to fetch the Java packages :
<repositories>
<repository>
<id>Apache Snapshot</id>
<url>https://repository.apache.org/content/groups/snapshots</url>
</repository>
</repositories>
Also, add this under the dependencies
tag :
<dependency>
<groupId>org.apache.mxnet</groupId>
<artifactId>mxnet-full_2.11-osx-x86_64-cpu</artifactId>
<version>1.3.1-SNAPSHOT</version>
</dependency>
The official Java Packages will be released with the release of MXNet 1.4 and will be available on MXNet Maven package repository.
Note :
Step 4. Import dependencies with Maven:
Click "Import Changes" in this prompt.
Step 5. Build the project:
Step 6. Navigate to the App.java class in the project and paste the code in main
method from HelloWorld.java from Java Demo project on MXNet repository, overwriting the original hello world code.
You can also grab the entire Java Demo project and run it by following the instructions on the README.
Step 7. Now run the App.java.
The result should be something similar to this:
Hello World!
(1,2)
Process finished with exit code 0
If you get an error, check the dependencies at the beginning of this tutorial. For example, you might see the following in the middle of the error messages, where x.x
would the version it's looking for.
...
Library not loaded: /usr/local/opt/opencv/lib/libopencv_calib3d.x.x.dylib
...
This can be resolved be installing OpenCV.
mvn clean install dependency:copy-dependencies
If the command succeeds, you should see a lot of info and some warning messages, followed by:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.475 s
[INFO] Finished at: 2018-11-08T05:06:31-08:00
[INFO] ------------------------------------------------------------------------
The build generates a new jar file in the target
folder called javaMXNet-1.0-SNAPSHOT.jar
.
To run the App.java use the following command from the project's root folder and you should see the same output as we got when the project was run from IntelliJ.
java -cp "target/javaMXNet-1.0-SNAPSHOT.jar:target/dependency/*" mxnet.App
For more information about MXNet Java resources, see the following:
Can you improve this documentation? These fine people already did:
Piyush Ghai, Sheng Zha, Andrew Ayres & LankingEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close