How to fix Java JVM loading error?

I am working on a large (15 MB) old 32-bit application written in C ++ Builder 6, which needs to use a third-party API to interact with an external system. The API consists of DLL groups that internally use Java (I assume JNI). Our code only interacts with one specific DLL directly, and it is loaded with a delay at runtime.

When the application runs on the client system, the DLL crashes for unknown reasons. So I tried to play on my system (XP Pro 32bit) and ran into another problem.

The application creates a thread that tries to initialize an API that internally tries to load the Java JVM and fails, and the API reports a "JVM create failure" error back to my code.

However, the same stream code running in a small test application works, Java loads just fine, and API functions usually work.

Both applications run from the same folder, so this is not a problem with the detection of API DLLs or Java JVM DLLs. I also made sure that both projects use the same compiler / linker options to use memory, heap size, alignment, processor type, etc.

I saw a link on the Internet suggesting that the JVM needs the address space of the calling process to have a large contiguous memory partition, is that true? If so, how much?

I tried to enable logging / tracing in the Java control panel, but nothing useful was logged.

, Java , ?

+4
1

, .

, jre JVM, . , OOM.

- 64 , . , , , .

+1

Source: https://habr.com/ru/post/1546768/


All Articles