You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Peter Radden (Jira)" <ji...@apache.org> on 2020/07/22 09:13:00 UTC

[jira] [Updated] (NIFI-6874) nifi-nar-maven-plugin "Could not generate extensions' documentation" with native libraries

     [ https://issues.apache.org/jira/browse/NIFI-6874?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter Radden updated NIFI-6874:
-------------------------------
    Priority: Major  (was: Minor)

> nifi-nar-maven-plugin "Could not generate extensions' documentation" with native libraries
> ------------------------------------------------------------------------------------------
>
>                 Key: NIFI-6874
>                 URL: https://issues.apache.org/jira/browse/NIFI-6874
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions, Tools and Build
>    Affects Versions: nifi-nar-maven-plugin-1.3.1
>            Reporter: Peter Radden
>            Priority: Major
>
> {code:java}
> org.apache.maven.plugin.MojoExecutionException: Failed to create Extension Documentation
>     at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:596)
>     at org.apache.nifi.NarMojo.execute (NarMojo.java:499)
>     ...
> Caused by: java.lang.UnsatisfiedLinkError: no [Library] in java.library.path
>     at java.lang.ClassLoader.loadLibrary (ClassLoader.java:1867)
>     at java.lang.Runtime.loadLibrary0 (Runtime.java:870)
>     at java.lang.System.loadLibrary (System.java:1122)
>     ...
>     at org.apache.nifi.processor.AbstractSessionFactoryProcessor.initialize (AbstractSessionFactoryProcessor.java:63)
>     at org.apache.nifi.documentation.AbstractDocumentationWriter.initialize (AbstractDocumentationWriter.java:86){code}
> Custom processors that require native libraries for the implementation fail to generate documentation during nar build due to the need to initialize the processor.
> While this could be resolved by a command line update to the java.library.path, I think that it would be better to extend the ExtensionClassLoader to attempt to find the libraries (similar to as done by the NarClassLoader.
> My current temporary solution which uses a customized nifi-nar-maven-plugin is to add the following function to the ExtensionClassLoader:
> {code:java}
> protected String findLibrary(final String libname)
> {
>     final File nativeDir = new File(projectOutputDirectory/*from MavenProject*/, "META-INF/bundled-dependencies/native");
>     final File libsoFile = new File(nativeDir, "lib" + libname + ".so");
>     final File dllFile = new File(nativeDir, libname + ".dll");
>     final File soFile = new File(nativeDir, libname + ".so");
>     if (libsoFile.exists())
>         return libsoFile.getAbsolutePath();
>     else if (dllFile.exists())
>         return dllFile.getAbsolutePath();
>     else if (soFile.exists())
>         return soFile.getAbsolutePath();
>     return null;
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)