legacy-knowledge-base
公開されました Sep. 10, 2025

グローバルクラスパスからのライブラリ読み込みの不具合(tomcat-)/lib/ext/)

written-by

Sivakumar Perumal

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • グローバルクラスパスからライブラリを読み込むと、Liferay の内部モジュール の 1 つと競合する
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.archivers.zip.ZipFile
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275]
    at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_275]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_275]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_275]
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[?:1.8.0_275]
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_275]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_275]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_275]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_275]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_275]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_275]
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1391) ~[catalina.jar:9.0.56]
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215) ~[catalina.jar:9.0.56]
    at com.liferay.shielded.container.internal.ShieldedContainerClassLoader.findClass(ShieldedContainerClassLoader.java:79) ~[com.liferay.shielded.container.impl.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:431) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:151) ~[org.eclipse.osgi.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275]
    at org.apache.tika.parser.microsoft.ooxml.OOXMLParser.<clinit>(OOXMLParser.java:41) ~[?:?]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_275]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_275]
    at org.apache.tika.config.ServiceLoader.getServiceClass(ServiceLoader.java:235) ~[?:?]
    at org.apache.tika.config.TikaConfig$XmlLoader.loadOne(TikaConfig.java:628) ~[?:?]
    at org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:589) ~[?:?]
    at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:198) ~[?:?]
    at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:182) ~[?:?]
    at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:157) ~[?:?]
    at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:153) ~[?:?]
    at com.liferay.portal.tika.internal.util.TikaConfigUtil.<clinit>(TikaConfigUtil.java:33) ~[?:?]
    at com.liferay.portal.tika.internal.metadata.TikaRawMetadataProcessor.<init>(TikaRawMetadataProcessor.java:91) ~[?:?]
    ... 376 more

Environment

  • Liferay DXP 7.4

解決策

  • モジュールを作成し、 compileInclude poi jars を作成し、 Export-Package bnd.bnd ファイルで指示し、poi を公開します。 それを使用する他のモジュールはまだそれらにアクセスすることができ、あなたはバンドルの更新時にジャーのコピーを心配する必要がないという利点を得ることができます。 poiが持つ依存関係はすべてモジュールに埋め込むことができるので、依存関係が重なることはなく、Liferayのバージョンとの競合を心配する必要はありません。 bnd.bndファイルでは(そして多分Export-Packageディレクトリでも)、使用しているPOIのバージョン番号を使用してください、それもOSGiが範囲外のバージョンへのバインドを防ぐのに役立ちます。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base