ArcGIS Maps SDK for Java enables you to build mapping applications for Windows, macOS and Linux platforms. Follow the steps below to ensure you have licensed the capabilities that your app uses and that you understand associated costs.
- License the capabilities you included in the app. Refer to the License levels and capabilities topic to determine the license level you require, and to the Get a license topic to learn how to acquire a license.
- Attribute Esri in your app.
- If you deploy content or services from ArcGIS location services, see the Deployment topic in the Mapping APIs and Location services guide.
Esri requires that when you use an ArcGIS Online basemap, Esri data services, or Esri API technology in your app, you must also include Esri attribution. There are specific requirements for attribution that you may be required to address in your app depending on how your app is built and the data it uses. These requirements are outlined in detail in the Attribution in your app topic.
This topic guides you through the process of deploying your application to your end user machines.
Create a new directory you'll use to build the application deployment.
Compile your application as a runnable
.jarfile and place the file in the directory you created above.
Create directories called jniLibs and resources next to your runnable .jar and inside this you will need to selectively copy over the directories in your IDE project. The purpose of the files in each directory is explained below. From this you can decide which directories need to be deployed with your app.
Directory Content purpose jniLibs/LX64 binaries for 64bit Linux jniLibs/MACOS/aarch64 binaries for Mac OS X on M1 or M2 jniLibs/MACOS/x64 binaries for Mac OS X on x64 jniLibs/MACOS/shaders Metal shaders (shared with x64 and M1/M2) jniLibs/WIN64 binaries for 64bit Windows resources/network_analyst Network Analyst resources for closest facility and routing tasks resources/pedata data for grid based transformations
See note below for download information
localserver100.14/64 binaries for 64bit Local Server
If your application uses Local Server functionality, you must also create a Local Server deployment to include with your deployed application. Refer to Deploy Local Server for more information about deploying Local Server for your Windows and Linux applications.
The Apache HTTP 5 dependency also requires the use of the SLF4J (Simple Logging Facade for Java) library which will result in the following warnings in your console output when starting your application.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Please refer to the SLF4J documentation about this warning and how to prevent it.
If you are not using the logging, you could include the following dependency in your build script. The example below shows how this can be achieved with Gradle:
This Apache HTTP dependency will cause runtime errors if you deploy your application in a fat jar, as it is a signed library. If you are using a fat jar deployment, then you will need to exclude the signing files from within the application jar. In Gradle this can be achieved by adding the following to the jar task:
// exclude signing files that come from dependencies