Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-9552

Ranger extension throws NoClassDefFoundError when try to create a TrustStore with it

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.15.2
    • 1.16.0
    • None
    • None

    Description

      When I execute the following command to create truststore:

       java -cp "nifi-assembly/target/nifi-1.13.2-bin/nifi-1.13.2/ext/ranger/install/lib/*" org.apache.ranger.credentialapi.buildks create sslTrustStore -value "test" -provider "jceks://test.jceks" 

      then I got the following error:

      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.
      Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
          at org.apache.hadoop.fs.FileSystem.<clinit>(FileSystem.java:135)
          at org.apache.hadoop.fs.Path.getFileSystem(Path.java:361)
          at org.apache.hadoop.security.alias.JavaKeyStoreProvider.initFileSystem(JavaKeyStoreProvider.java:89)
          at org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider.<init>(AbstractJavaKeyStoreProvider.java:85)
          at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:49)
          at org.apache.hadoop.security.alias.JavaKeyStoreProvider.<init>(JavaKeyStoreProvider.java:41)
          at org.apache.hadoop.security.alias.JavaKeyStoreProvider$Factory.createProvider(JavaKeyStoreProvider.java:100)
          at org.apache.hadoop.security.alias.CredentialProviderFactory.getProviders(CredentialProviderFactory.java:73)
          at org.apache.ranger.credentialapi.CredentialReader.getDecryptedString(CredentialReader.java:59)
          at org.apache.ranger.credentialapi.buildks.createCredential(buildks.java:80)
          at org.apache.ranger.credentialapi.buildks.main(buildks.java:40)
      Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
          at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
          at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
          ... 11 more 

      Problem analisys

      The error happens bacause of  NIFI-9491.

      The missing dependency included in the pom.xml (https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-ranger-bundle/nifi-ranger-resources/pom.xml#L58) however during assembly, the jar is not copied under ext/ranger/install/lib/ directory.

      The reason behind is probably, because the lib has provided scope:

      [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ nifi-ranger-plugin ---
      [INFO] org.apache.nifi:nifi-ranger-plugin:jar:1.16.0-SNAPSHOT
      [INFO] \- org.slf4j:jcl-over-slf4j:jar:1.7.32:provided 

      Workaround

      copy the jcl-over-slf4j lib to ext/ranger/install/lib/  directory.

       

      Attachments

        Activity

          People

            taz1988 Zoltán Kornél Török
            taz1988 Zoltán Kornél Török
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1h 10m
                1h 10m