Skip to content

osgi.os not set during help index build leading to exception #4614

@Bananeweizen

Description

@Bananeweizen

We use Tycho 4.0.10 to build and everything is good. After upgrading https://tycho.eclipseprojects.io/doc/main/tycho-extras/tycho-document-bundle-plugin/build-help-index-mojo.html#buildToolsRepository from 2024-06 to 2024-12 I see a new exception during help index build:

java.lang.NullPointerException: Cannot invoke "String.hashCode()" because "os" is null
at org.eclipse.core.internal.net.ProxyManager. (ProxyManager.java:69)
at org.eclipse.core.internal.net.ProxyManager.getProxyManager (ProxyManager.java:86)
at org.eclipse.core.internal.net.Activator.start (Activator.java:176)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run (BundleContextImpl.java:833)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run (BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged (AccessController.java:571)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator (BundleContextImpl.java:825)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start (BundleContextImpl.java:775)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0 (EquinoxBundle.java:1057)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker (EquinoxBundle.java:387)
at org.eclipse.osgi.container.Module.doStart (Module.java:639)
at org.eclipse.osgi.container.Module.start (Module.java:498)
at org.eclipse.osgi.framework.util.SecureAction.start (SecureAction.java:528)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass (EclipseLazyStarter.java:122)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass (ClasspathManager.java:620)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass (ModuleClassLoader.java:348)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass (BundleLoader.java:414)
at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass (SingleSourcePackage.java:41)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass0 (BundleLoader.java:516)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java:434)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass (ModuleClassLoader.java:174)
at java.lang.ClassLoader.loadClass (ClassLoader.java:526)
at java.lang.Class.forName0 (Native Method)
at java.lang.Class.forName (Class.java:421)
at java.lang.Class.forName (Class.java:412)
at org.eclipse.help.internal.base.util.ProxyUtil.isAuthConnSupported (ProxyUtil.java:42)
at org.eclipse.help.internal.base.util.ProxyUtil.getProxy (ProxyUtil.java:52)
at org.eclipse.help.internal.base.util.ProxyUtil.getConnection (ProxyUtil.java:111)
at org.eclipse.help.internal.base.util.ProxyUtil.getStream (ProxyUtil.java:127)
at org.eclipse.help.internal.search.HTMLSearchParticipant.isXHTML (HTMLSearchParticipant.java:112)
at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument (HTMLSearchParticipant.java:51)
at org.eclipse.help.internal.search.SearchIndex.addDocument (SearchIndex.java:264)
at org.eclipse.help.search.HelpIndexBuilder.createIndex (HelpIndexBuilder.java:570)
at org.eclipse.help.search.HelpIndexBuilder.processLocaleDir (HelpIndexBuilder.java:470)
at org.eclipse.help.search.HelpIndexBuilder.execute (HelpIndexBuilder.java:308)
at org.eclipse.tycho.extras.docbundle.runner.BuildHelpIndexRunner.call (BuildHelpIndexRunner.java:41)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.eclipse.tycho.osgi.framework.EclipseFramework.execute (EclipseFramework.java:141)
at org.eclipse.tycho.extras.docbundle.BuildHelpIndexMojo.execute (BuildHelpIndexMojo.java:73)

That variable is taken from the osgi.os system property: https://github.com/eclipse-platform/eclipse.platform/blob/9e4e1ad5fb99632526881b8b0b1f710b43c6da70/team/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java#L68
To my understanding the mojo just starts the OSGi based application. How can one of the osgi system properties not be set in such a case? I'm completely confused where to start looking, as I thought these properties are always and automatically set during OSGi startup?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions