Legacy Knowledge Base
Published Jul. 2, 2025

Ext module based on patched original module is named as null.ext.jar after having been regenerated

Written By

Daniel Couso

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

You are viewing an article from our legacy "FastTrack" publication program, made available for informational purposes. Articles in this program were published without a requirement for independent editing or verification and are provided"as is" without guarantee.

Before using any information from this article, independently verify its suitability for your situation and project.

Issue

  • We are developing an ext module to extend a liferay module, com.liferay.asset.browser.web, in this case, and we have configured the build.gradle of this ext module to use this package as the originalModule.
  • We have installed a hotfix that includes a patched version of com.liferay.asset.browser.web and we want to use this version as the originalModule.
  • If we use the code version included in the hotfix, com.liferay.asset.asset.browser.web-0.0.00.hotfix-1234-7310.jar, a null.ext.jar file is generated after build our ext module.
  • On the other hand, if we use the code version of com.liferay.asset.asset.browser.web.jar, the build is generated successfully.

Environment

  • Liferay DXP 7.1+

Resolution

  • A possible cause could be that the com.liferay.asset.asset.browser.web-0.0.00.hotfix-1234-7310.jar has been used as a code base directly from the hotfix itself instead of take it from the <LIFERAY_HOME>/osgi/marketplace/ folder after applying the hotfix on the server.
  • It would also be necessary to check that the MANIFIEST.MF file used is complete, i.e. includes Bundle-SymbolicName, Bundle-Version, Import-Package, etc., otherwise the gradle task may not be able to determine the version and module name properly.
  • This would be an example of a complete, valid MANIFIEST.MF that it could be used:
    Manifest-Version: 1.0
    Bnd-LastModified: 1650174746801
    Bundle-ManifestVersion: 2
    Bundle-Name: Liferay Asset Browser Web
    Bundle-SymbolicName: com.liferay.asset.browser.web
    Bundle-Vendor: Liferay, Inc.
    Bundle-Version: 4.0.33.hotfix-5007-7310
    Created-By: 1.8.0_121 (Oracle Corporation)
    Import-Package: com.liferay.asset.kernel;version="[1.1,2)",com.liferay
    .asset.kernel.model;version="[3.5,4)",com.liferay.asset.kernel.servic
    e;version="[2.10,3)",com.liferay.asset.util;version="[1.4,2)",com.lif
    eray.depot.model;version="[2.0,3)",com.liferay.depot.service;version=
    "[1.7,2)",com.liferay.expando.kernel.model;version="[3.3,4)",com.life
    ray.frontend.taglib.clay.servlet.taglib.display.context;version="[1.5
    ,2)",com.liferay.frontend.taglib.clay.servlet.taglib.soy;version="[2.
    1,3)",com.liferay.frontend.taglib.clay.servlet.taglib.util;version="[
    3.6,4)",com.liferay.item.selector;version="[4.3,5)",com.liferay.item.
    selector.criteria;version="[2.1,3)",com.liferay.item.selector.criteri
    a.asset.criterion;version="[1.1,2)",com.liferay.petra.function;versio
    n="[1.3,2)",com.liferay.petra.sql.dsl.query;version="[1.0,2)",com.lif
    eray.petra.string;version="[1.4,2)",com.liferay.portal.kernel.annotat
    ion;version="[7.0,8)",com.liferay.portal.kernel.configuration;version
    ="[6.3,7)",com.liferay.portal.kernel.dao.orm;version="[9.7,10)",com.l
    iferay.portal.kernel.dao.search;version="[8.0,9)",com.liferay.portal.
    kernel.exception;version="[9.5,10)",com.liferay.portal.kernel.json;ve
    rsion="[8.7,9)",com.liferay.portal.kernel.language;version="[8.3,9)",
    com.liferay.portal.kernel.log;version="[7.0,8)",com.liferay.portal.ke
    rnel.model;version="[5.6,6)",com.liferay.portal.kernel.portlet;versio
    n="[10.3,11)",com.liferay.portal.kernel.portlet.bridges.mvc;version="
    [3.0,4)",com.liferay.portal.kernel.resource.bundle;version="[1.0,2)",
    com.liferay.portal.kernel.search;version="[9.5,10)",com.liferay.porta
    l.kernel.security.permission;version="[3.4,4)",com.liferay.portal.ker
    nel.service;version="[4.11,5)",com.liferay.portal.kernel.servlet;vers
    ion="[8.4,9)",com.liferay.portal.kernel.servlet.taglib.ui;version="[6
    .7,7)",com.liferay.portal.kernel.settings;version="[3.1,4)",com.lifer
    ay.portal.kernel.theme;version="[3.1,4)",com.liferay.portal.kernel.up
    grade;version="[8.5,9)",com.liferay.portal.kernel.upload;version="[8.
    1,9)",com.liferay.portal.kernel.util;version="[10.24,11)",com.liferay
    .portal.kernel.xml;version="[7.0,8)",com.liferay.portal.upgrade.regis
    try;version="[3.0,4)",javax.portlet,javax.servlet,javax.servlet.http
    Javac-Debug: on
    Javac-Deprecation: off
    Javac-Encoding: UTF-8
    Liferay-Releng-App-Title: Liferay Asset
    Liferay-Releng-Bundle: true
    Liferay-Releng-Category: Productivity
    Liferay-Releng-Deprecated: false
    Liferay-Releng-Fix-Delivery-Method: core
    Liferay-Releng-Labs: false
    Liferay-Releng-Marketplace: true
    Liferay-Releng-Portal-Required: true
    Liferay-Releng-Public: false
    Liferay-Releng-Restart-Required: true
    Liferay-Releng-Suite: web-experience
    Liferay-Releng-Suite-Description: Apps and Features: Widget Templates,
    Asset Publisher, Breadcrumb, Categories, Google Analytics, IFrame, L
    anguage, Navigation, Recycle Bin, Related Content, RSS, Search, Site
    and Page Templates, Sitemap, Sites Directory, Tags, Web Content, XSL
    Content<br /><br />The Web Experience suite provides features that he
    lp create, manage, and track content. The Web Content app lets you ex
    press your ideas and plans by creating dynamic content that can be st
    ructured to fit a specific design. You can also use templates to desi
    gn web content for an appealing look and feel. Templates can be used
    in other realms of Liferay besides web content too. Site and Page Tem
    plates let you reproduce sites and pages that have been organized to
    address specific needs. Application Display Templates are another typ
    e of Liferay template that lets you develop the look and feel of appl
    ications. The IFrame and XSL Content apps let you create other forms
    of content by embedding HTML and XSL content on a site page.<br /><br
    />As administrators create content, organization is critical to keep
    ing things tidy in your site. The suite's Tags and Categories apps le
    ts you organize your web content to follow an organizational hierarch
    y. These organizational apps also aid with Liferay's Search app, whic
    h you can utilize to dynamically search content you've created. The s
    uite's Navigation, Breadcrumb, Sitemap, and Sites Directory apps aid
    in Liferay's organizational structure, providing a top level view of
    sites and their pages that have been created. To promote content in a
    n organized way, the Asset Publisher and Related Assets apps broadcas
    t assets and their related information. Inevitably, some content you
    create becomes stale and requires removal; the Recycle Bin app lets y
    ou delete content, with the option to restore that content.<br /><br
    />As a site accumulates content, administrators should have a way to
    easily track their content. The Google Analytics app allows the use o
    f Google's tool set for analyzing site traffic data. The suite's RSS
    app provides a web feed used to publish updated works such as blog en
    tries and news articles. The suite's Language app provides a way to c
    hange Liferay's language to cater to your site's international audien
    ce. This suite's content creation and organization focus lets site ad
    ministrators develop dynamic content, organize content for easy manag
    ing, and track content for ideas to better improve the content creati
    on process in the future.<br /><br />This suite may contain modules t
    hat depend on Foundation suite modules. This suite is available in th
    e Liferay bundle.
    Liferay-Releng-Suite-Title: Liferay Web Experience
    Liferay-Releng-Support-Url: http://www.liferay.com
    Liferay-Releng-Supported: true
    Private-Package: com.liferay.asset.browser.web.internal.configuration,
    com.liferay.asset.browser.web.internal.constants,com.liferay.asset.br
    owser.web.internal.display.context,com.liferay.asset.browser.web.inte
    rnal.item.selector,com.liferay.asset.browser.web.internal.portlet,com
    .liferay.asset.browser.web.internal.search,com.liferay.asset.browser.
    web.internal.servlet.taglib.clay,com.liferay.asset.browser.web.intern
    al.upgrade,content
    Provide-Capability: osgi.service;objectClass:List<String>="com.liferay
    .item.selector.ItemSelectorCriterionHandler";uses:="com.liferay.item.
    selector",osgi.service;objectClass:List<String>="com.liferay.item.sel
    ector.ItemSelectorReturnTypeResolver";uses:="com.liferay.item.selecto
    r",osgi.service;objectClass:List<String>="com.liferay.item.selector.I
    temSelectorView";uses:="com.liferay.item.selector",osgi.service;objec
    tClass:List<String>="com.liferay.portal.kernel.portlet.BrowsePortletP
    rovider";uses:="com.liferay.portal.kernel.portlet",osgi.service;objec
    tClass:List<String>="com.liferay.portal.upgrade.registry.UpgradeStepR
    egistrator";uses:="com.liferay.portal.upgrade.registry",osgi.service;
    objectClass:List<String>="javax.portlet.Portlet";uses:="javax.portlet
    ",liferay.resource.bundle;bundle.symbolic.name="com.liferay.asset.bro
    wser.web";resource.bundle.base.name="content.Language"
    Require-Capability: osgi.extender;filter:="(&(osgi.extender=jsp.taglib
    )(uri=http://java.sun.com/portlet_2_0))",osgi.extender;filter:="(&(os
    gi.extender=jsp.taglib)(uri=http://liferay.com/tld/aui))",osgi.extend
    er;filter:="(&(osgi.extender=jsp.taglib)(uri=http://liferay.com/tld/c
    lay))",osgi.extender;filter:="(&(osgi.extender=jsp.taglib)(uri=http:/
    /liferay.com/tld/frontend))",osgi.extender;filter:="(&(osgi.extender=
    jsp.taglib)(uri=http://liferay.com/tld/site-navigation))",osgi.extend
    er;filter:="(&(osgi.extender=jsp.taglib)(uri=http://liferay.com/tld/t
    heme))",osgi.extender;filter:="(&(osgi.extender=jsp.taglib)(uri=http:
    //liferay.com/tld/ui))",osgi.extender;filter:="(&(osgi.extender=osgi.
    component)(version>=1.3.0)(!(version>=2.0.0)))",osgi.service;filter:=
    "(objectClass=com.liferay.asset.util.AssetHelper)";effective:=active,
    osgi.service;filter:="(objectClass=com.liferay.portal.kernel.language
    .Language)";effective:=active,osgi.service;filter:="(objectClass=com.
    liferay.portal.kernel.model.Release)";effective:=active,osgi.service;
    filter:="(objectClass=com.liferay.portal.kernel.util.Portal)";effecti
    ve:=active,osgi.service;filter:="(objectClass=javax.servlet.ServletCo
    ntext)";effective:=active,osgi.contract;osgi.contract=JavaPortlet;fil
    ter:="(&(osgi.contract=JavaPortlet)(version=3.0.0))",osgi.contract;os
    gi.contract=JavaServlet;filter:="(&(osgi.contract=JavaServlet)(versio
    n=3.1.0))",osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
    Service-Component: OSGI-INF/com.liferay.asset.browser.web.internal.ite
    m.selector.AssetEntryItemSelectorCriterionHandler.xml,OSGI-INF/com.li
    feray.asset.browser.web.internal.item.selector.AssetEntryItemSelector
    ReturnTypeResolver.xml,OSGI-INF/com.liferay.asset.browser.web.interna
    l.item.selector.AssetEntryItemSelectorView.xml,OSGI-INF/com.liferay.a
    sset.browser.web.internal.portlet.AssetBrowserBrowsePortletProvider.x
    ml,OSGI-INF/com.liferay.asset.browser.web.internal.portlet.AssetBrows
    erPortlet.xml,OSGI-INF/com.liferay.asset.browser.web.internal.upgrade
    .AssetBrowserWebUpgrade.xml
    Tool: Bnd-4.3.0.201909301554
    Web-ContextPath: /asset-browser-web
Did this article resolve your issue ?

Legacy Knowledge Base