tdlight/example/java
levlam 73554fcfa5 Improve README.
GitOrigin-RevId: 77d85ac9661d927031bd5f8b8604c2e02c5b5ddb
2020-08-18 09:51:18 +03:00
..
org/drinkless/tdlib Automatically detect operating system version. 2020-06-19 03:45:24 +03:00
.gitignore Add Java example. 2018-01-28 13:58:33 +03:00
CMakeLists.txt Do not try to use PHP on HardenedBSD. 2020-02-29 16:15:52 +03:00
README.md Improve README. 2020-08-18 09:51:18 +03:00
td_jni.cpp Update copyright year. 2020-01-01 04:23:48 +03:00

TDLib Java example

To run this example, you will need installed JDK >= 1.6. For Javadoc documentation generation PHP is needed.

TDLib should be prebuilt with JNI bindings and installed to local subdirectory td/ as follows:

cd <path to TDLib sources>
mkdir jnibuild
cd jnibuild
cmake -DCMAKE_BUILD_TYPE=Release -DTD_ENABLE_JNI=ON -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td ..
cmake --build . --target install

If you want to compile TDLib for 32-bit/64-bit Java on Windows using MSVC, you will also need to add -A Win32/-A x64 option to CMake.

In Windows, use Vcpkg toolchain file by adding parameter -DCMAKE_TOOLCHAIN_FILE=<VCPKG_DIR>/scripts/buildsystems/vcpkg.cmake

Then you can build this example:

cd <path to TDLib sources>/example/java
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DTd_DIR=<full path to TDLib sources>/example/java/td/lib/cmake/Td -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake --build . --target install

Compiled TDLib shared library and Java example after that will be placed in bin/ and Javadoc documentation in docs/.

Now you can run Java example:

cd <path to TDLib sources>/example/java/bin
java '-Djava.library.path=.' org/drinkless/tdlib/example/Example

If you get "Could NOT find JNI ..." error from CMake, you need to specify to CMake path to the installed JDK, for example, "-DJAVA_HOME=/usr/lib/jvm/java-8-oracle/".

If you get java.lang.UnsatisfiedLinkError with "Can't find dependent libraries", you may also need to copy some dependent shared OpenSSL and zlib libraries to bin/.

In case you compiled the example as 32-bit version, you may need to give -d32 parameter to Java.