Chilkat2 for Java — Downloads

Chilkat2 for Java is the Java-style Chilkat API: package com.chilkatsoft.chilkat2, with getX()/setX() properties, methods that throw ChilkatException when they fail, AutoCloseable objects for try-with-resources, and progress callbacks you can write as lambdas. HTTP and REST, email, FTP, SFTP, SSH, zip, encryption, signatures, certificates, XML, JSON, sockets and more, on Windows, Linux, Alpine Linux and macOS. Each download works with every JDK from Java 8 up (8, 11, 17, 21, 25, …) and from Kotlin.

Chilkat2 Java or the classic Chilkat Java library? Both use the same Chilkat engine and have the same classes and functionality. Chilkat2 Java (new Http(), http.quickGetStr(url), exceptions) is for new code. The classic library (com.chilkatsoft.CkHttp, chilkat.jar, status codes) is unchanged and remains on the Chilkat Java downloads page; the two can be used side by side, even in the same program. See the differences.

Jump to: Which download? · Windows · Linux · Alpine Linux · macOS · Getting started · Using it in your project · How the native library is found · The API in brief · Troubleshooting

Documentation & Samples

Which download do I need?

The download contains a native library, so match it to the operating system and the architecture of the JVM you will run (the JDK version does not matter). To see the JVM's architecture:

java -XshowSettings:properties -version 2>&1 | grep os.arch          # Linux, macOS
java -XshowSettings:properties -version 2>&1 | findstr os.arch       :: Windows

Windows

  • 64-bit JVM (amd64)→ chilkat2-java-x64
  • 32-bit JVM (x86)→ chilkat2-java-win32
  • ARM64 JVM (aarch64)→ chilkat2-java-arm64

An x64 JVM running emulated on a Windows-on-ARM PC uses the x64 build.

Linux (glibc)

  • x86_64 (amd64)→ chilkat2-java-x86_64-linux
  • arm64 (aarch64)→ chilkat2-java-aarch64-linux
  • 32-bit ARM (arm)→ chilkat2-java-armv7l-linux

Raspberry Pi: 64-bit OS → arm64, 32-bit OS → armv7l.

Alpine Linux (musl)

  • x86_64→ chilkat2-java-x86_64-alpine
  • arm64→ chilkat2-java-aarch64-alpine

For Alpine-based Docker images (eclipse-temurin:*-alpine, …). The glibc builds do not load on Alpine.

macOS

  • Apple silicon (aarch64)→ chilkat2-java-arm64-macosx
  • Intel (x86_64)→ chilkat2-java-x86_64-macosx

An Intel JVM running under Rosetta on an Apple-silicon Mac needs the x86_64 build.


Windows

Each .zip contains a code-signed chilkat2java.dll for one architecture, linked with the C runtime statically (no Visual C++ redistributable needed), plus chilkat2.jar. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 96ff9241e0e2e7771ce630c93b3f89985c9478a7b94bbc1cacd8ae41b57437df
Chilkat2 Java 64-bit Library

v11.7.0 • 11-Nov-2026 • sha256: 55e5dd03ae11771be9ac6414804b9bc427a3f37dfbaf8fcaf5bee4ee7617d6df
Chilkat2 Java 32-bit Library

v11.7.0 • 11-Nov-2026 • sha256: 1dfc2ecedc8893e2987da80a880d0de3bff7bc9cef02eef7a82e8071358fcaa0
Chilkat2 Java Windows ARM64 Library


Linux

For glibc-based distributions (Debian/Ubuntu, RHEL/Fedora, SUSE, Arch, Raspberry Pi OS, …). Each .tar.gz contains libchilkat2java.so and chilkat2.jar. Alpine Linux uses musl and needs the Alpine downloads below. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 0d21c6f35243ea95fc7581546c6b7a43764d970d6413f6501c695ce69ba0b99f
Chilkat2 Java 64-bit Linux Library

v11.7.0 • 11-Nov-2026 • sha256: 5ac1cf1b0ce0b7883b071c1f2fc4436be5fbfa05c9d1fe01c7c364c71d02ce63
Chilkat2 Java Library for arm64 Linux

v11.7.0 • 11-Nov-2026 • sha256: 64c5e7ab2e61e81bbcadea91bdee64cc5c99e2e40f02f40d904abbc2815d752c
Chilkat2 Java Library for armv7l Linux


Alpine Linux

Built for musl. Each .tar.gz contains libchilkat2java.so and chilkat2.jar. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 8c40092e230d23c897af7315447e529b07d01ec9d3d68199a85b164c2e184d9d
Chilkat2 Java Library for x86_64 Alpine Linux

v11.7.0 • 11-Nov-2026 • sha256: 48f59986960fea33492caccd7e0d7ef6f9cf5179d212eaf12d4f15f01f7ce0d9
Chilkat2 Java Library for arm64 Alpine Linux


macOS

Each .tar.gz contains a code-signed libchilkat2java.dylib and chilkat2.jar. Apple silicon requires macOS 11 or later; Intel requires macOS 10.14 or later. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 0ad521ba0fe2e1634ad3c061e71b15b1b298a1f7e989a74d27e7ebf30e94f73a
Chilkat2 Java MacOS arm64 Library

v11.7.0 • 11-Nov-2026 • sha256: f0381dc286b541700cb9ca1b9760215c6fc44c6b757efdbc31f3e27fe7c2fc69
Chilkat2 Java MacOS x86_64 Library


Getting started

The steps are the same on every operating system. Only three things differ:

WindowsLinux, AlpinemacOS
Archive.zip.tar.gz.tar.gz
Native librarychilkat2java.dlllibchilkat2java.solibchilkat2java.dylib
Classpath separator;::
  1. Download and extract

    tar xzf chilkat2-java-x86_64-linux.tar.gz          # Linux / Alpine / macOS (your file name)
    # Windows: right-click the .zip → Extract All, or:
    tar -xf chilkat2-java-x64.zip                      # Windows 10 and later include tar

    macOS only: if the browser added a quarantine attribute, clear it so Gatekeeper does not block the library:

    xattr -dr com.apple.quarantine chilkat2-java-arm64-macosx
  2. What's in the download

    chilkat2-java-<platform>/
    ├─ chilkat2.jar             the classes: put it on the classpath
    ├─ chilkat2java.dll         the native library (libchilkat2java.so / .dylib elsewhere)
    ├─ chilkat2-sources.jar     attach in your IDE: source
    ├─ chilkat2-javadoc.jar     attach in your IDE: documentation
    ├─ README.txt
    ├─ Test.java                a small check that everything loads
    ├─ runTest.bat / runTest.sh compiles and runs Test.java
    └─ license.pdf, THIRD-PARTY-NOTICES.txt, … and a software bill of materials (chilkat.cdx.json)
  3. Verify

    Run runTest.bat (Windows) or sh runTest.sh (Linux, Alpine, macOS) from the extracted folder. It compiles and runs Test.java, which prints the version, where the native library was loaded from, and the platform:

    Chilkat2 Java 11.7.0
    native library: ./libchilkat2java.so
    platform: linux-x86_64
  4. Compile and run your own program

    Put chilkat2.jar on the classpath, and tell Chilkat2 where the native library is with -Dchilkat2.library.path (the directory that contains it):

    javac -cp chilkat2.jar MyApp.java
    java -Dchilkat2.library.path=/opt/chilkat2 -cp .:chilkat2.jar MyApp                # Linux, macOS
    java -Dchilkat2.library.path=C:\chilkat2 -cp .;chilkat2.jar MyApp                  :: Windows

    No System.loadLibrary call is needed: the first Chilkat2 object you create loads the library. java.library.path works too, and the library can also travel inside your own jar (how the library is found).

  5. Unlock

    Chilkat is fully functional for a 30-day trial. Call unlockBundle once when your program starts; any string starts the trial, and your purchased unlock code is used the same way:

    try (Global glob = new Global()) {
        glob.unlockBundle("Anything for 30-day trial");
    }

A first program

import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Global;
import com.chilkatsoft.chilkat2.Http;

public class MyApp {
    public static void main(String[] args) {
        try (Global glob = new Global()) {
            glob.unlockBundle("Anything for 30-day trial");
        }

        // try-with-resources releases the native object when the block ends.
        try (Http http = new Http()) {
            http.setConnectTimeout(10);
            http.onPercentDone(pct -> { System.out.println(pct + "%"); return false; });

            String html = http.quickGetStr("https://www.chilkatsoft.com/");
            System.out.println("HTTP " + http.getLastStatus() + ", " + html.length() + " chars");
        } catch (ChilkatException e) {
            System.out.println(e.getMessage());         // "Http.quickGetStr failed: <reason>"
            System.out.println(e.getLastErrorText());   // the full log of the failed call
        }
    }
}

Using it in your project

Chilkat2 Java is not in a Maven repository; the jar comes from the download. In every case the jar goes on the classpath, and the JVM that runs your program gets -Dchilkat2.library.path=<dir> (or the library is bundled, below).

IntelliJ IDEA, Eclipse, VS Code

Add chilkat2.jar as a library of the project (IntelliJ: Project Structure → Libraries; Eclipse: Build Path → Add External JARs; VS Code: Java Projects → Referenced Libraries), attach chilkat2-sources.jar and chilkat2-javadoc.jar to it for documentation as you type, and add -Dchilkat2.library.path=<dir> to the run configuration's VM options (VS Code: "vmArgs" in launch.json).

Maven

Install the jar once into your local repository, then depend on it as usual:

mvn install:install-file -Dfile=chilkat2.jar -Dsources=chilkat2-sources.jar -Djavadoc=chilkat2-javadoc.jar \
    -DgroupId=com.chilkatsoft -DartifactId=chilkat2 -Dversion=11.7.0 -Dpackaging=jar

<dependency>
  <groupId>com.chilkatsoft</groupId>
  <artifactId>chilkat2</artifactId>
  <version>11.7.0</version>
</dependency>

For a team or CI, deploy the same jar to your organization's repository (Nexus, Artifactory, GitHub Packages, …) with mvn deploy:deploy-file.

Gradle

dependencies {
    implementation(files("libs/chilkat2.jar"))
}
tasks.withType<JavaExec>().configureEach {
    jvmArgs("-Dchilkat2.library.path=${projectDir}/libs")
}

Kotlin

Kotlin uses the same jar. Accessors read as properties, use closes the object, and the progress helpers take Kotlin lambdas:

Http().use { http ->
    http.connectTimeout = 10
    http.onPercentDone { pct -> println("$pct%"); false }
    val html = http.quickGetStr("https://www.chilkatsoft.com/")
}

How the native library is found

The first Chilkat2 object you create loads the native library, trying in this order:

  1. the directory named by -Dchilkat2.library.path=<dir>;
  2. a library bundled in your own jar as the resource /com/chilkatsoft/chilkat2/native/<platform>/<library> (it is extracted once to ~/.chilkat2/<version>/<platform>/, or to the directory named by -Dchilkat2.extract.dir, and reused while it is unchanged);
  3. java.library.path (the standard JNI search).

Bundling is how you ship one self-contained jar: copy the library from each download you support into your project's resources under the platform name below (Maven/Gradle: src/main/resources/com/chilkatsoft/chilkat2/native/linux-x86_64/libchilkat2java.so, and so on), and no command-line option is needed at run time.

DownloadPlatform directoryLibrary
chilkat2-java-x64windows-x86_64chilkat2java.dll
chilkat2-java-win32windows-x86
chilkat2-java-arm64windows-aarch64
chilkat2-java-x86_64-linuxlinux-x86_64libchilkat2java.so
chilkat2-java-aarch64-linuxlinux-aarch64
chilkat2-java-armv7l-linuxlinux-armv7
chilkat2-java-x86_64-alpinelinux-musl-x86_64
chilkat2-java-aarch64-alpinelinux-musl-aarch64
chilkat2-java-arm64-macosxmacos-aarch64libchilkat2java.dylib
chilkat2-java-x86_64-macosxmacos-x86_64

Chilkat2Native.platform() returns the running JVM's platform string (Test.java prints it), and Chilkat2Native.ensureLoaded() can be called at startup to report a loading problem early.


The API in brief

Same classes, same members, same behavior as every other Chilkat product; the reference documentation shows the exact Java signature of each.

Chilkat2 JavaClassic Chilkat Java
Package, classescom.chilkatsoft.chilkat2.Httpcom.chilkatsoft.CkHttp
Native libraryloaded automatically (chilkat2java)System.loadLibrary("chilkat")
PropertiesgetConnectTimeout() / setConnectTimeout(30)get_ConnectTimeout() / put_ConnectTimeout(30)
Methodshttp.quickGetStr(url)http.quickGetStr(url) / QuickGetStr(url, CkString)
Failurethrows ChilkatException (message, getLastErrorText())returns false / null; read lastErrorText()
“Not found”lookup methods such as xml.findChild(path) return null, no exceptionreturns null
Yes/no methodsjson.hasMember(path) returns boolean, never throwsreturns boolean
Strings and bytesString, byte[]also CkString, CkByteData
LifetimeAutoCloseable: try-with-resources, close()delete() or the garbage collector
Progress eventsonPercentDone(pct -> …), onAbortCheck, onProgressInfo, or a ProgressListenersubclass CkHttpProgress etc.
Async (*Async, Task)not included; use your own threads or executorsincluded
Unlockingnew Global().unlockBundle(code)new CkGlobal().UnlockBundle(code)

Events run on the thread that called the method; returning true from abortCheck or percentDone aborts the method, and setting setAbortCurrent(true) from another thread does too. Use an object from one thread at a time.


Troubleshooting

UnsatisfiedLinkError: Chilkat2 Java … the native library … was not found
The message ends with every place that was tried. Point -Dchilkat2.library.path at the directory that contains the library (not at the file), or check the resource path if you bundle it.
UnsatisfiedLinkError mentioning a wrong architecture, ELF class, or mach-o
The download does not match the JVM: for example an x64 library with a 32-bit JVM, an arm64 library under a Rosetta (x86_64) JVM, or a Linux (glibc) library on Alpine. Check os.arch (above) and use the matching download.
macOS: the library “cannot be opened” or fails a code-signature check
Clear the download's quarantine attribute: xattr -dr com.apple.quarantine <extracted folder>.
NoClassDefFoundError: com/chilkatsoft/chilkat2/…
chilkat2.jar is not on the classpath of the JVM that runs the program (separator ; on Windows, : elsewhere).
“reference to StringBuilder is ambiguous”
Chilkat has a StringBuilder class. With import com.chilkatsoft.chilkat2.*, write com.chilkatsoft.chilkat2.StringBuilder or java.lang.StringBuilder in full, or import the Chilkat classes one by one.
UnsupportedOperationException: CodeSign is available on Windows only
CodeSign and ScMinidriver use Windows APIs and exist only in the Windows builds.