Skip to Content

Eclipse Photon connection to HANA Express

The connection to the HANA express edition fails with a "java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException" error.

The VM is up and running and I can connect from the VM console using SYSTEM.

I have verified that java home is set correctly both in terminal and eclipse.

This is what I get with java -version on terminal

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000} span.s1 {font-variant-ligatures: no-common-ligatures}

'java version "11.0.1" 2018-10-16 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

The current version of the jdk in Eclipse is "/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home".

I have uninstalled and reinstalled eclipse several times but with no success.

Everything is fine with the HANA express install on the VM. It's just that I cant figure out as to why eclipse fails to connect when I try to add the system. I have also confirmed that it is not a firewall issue.

Any pointers would be appreocated

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

1 Answer

  • Dec 04, 2018 at 01:58 AM

    Based on the information on stackoverflow ( here) this problem is caused by

    • using a JDK newer than JDK 8

    and

    • the fact that the package that contains code for XML/SOAP handling had been moved to a different Java module

    I'm not a JDK expert, but the easiest solution I found working for me was to make sure that my eclipse uses the JDK 8 on my mac.

    First I checked what JDKs are installed on the machine and where they are located:

    /usr/libexec/java_home -V
    Matching Java Virtual Machines (3):
        11.0.1, x86_64:	"OpenJDK 11.0.1"	/Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home
        1.8.0_191, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
        1.8.0_181, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
    
    /Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home
    

    This means, there are 3 JDKs on my machine in total (two for JAVA SE 8 and for JAVA 11). The newest one (JDK 11) is the default JDK.

    That's the one (the latest) eclipse on macOS uses by default. To change that, you open the ECLIPSE package contents (in the Applications folder) and edit the ./Contents/info.plist file. This file is used by macOS to determine the runtime environment for the application.

    In this XML file there is a section for "Eclipse" with a comment that instructs you how to set a specific JDK VM.
    I simply inserted the <string> section for my most recent JDK 8 (1.8.0_191) like so:

    <key>Eclipse</key>
     <array>
     <!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
     or add a VM found via $/usr/libexec/java_home -V
     <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
     <string>-vm</string><string>/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home/bin/java</string>
     -->
     <string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java</string>
     <string>-keyring</string>
          <string>~/.eclipse_keyring</string>
     </array>
    

    After saving this file, restart eclipse as usual and the problem should be solved (it is on my machine ;-)).

    Add comment
    10|10000 characters needed characters exceeded