You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Markus Rathgeb (JIRA)" <ji...@apache.org> on 2016/11/24 16:02:58 UTC

[jira] [Created] (SSHD-717) wrong import-package directive

Markus Rathgeb created SSHD-717:
-----------------------------------

             Summary: wrong import-package directive
                 Key: SSHD-717
                 URL: https://issues.apache.org/jira/browse/SSHD-717
             Project: MINA SSHD
          Issue Type: Bug
    Affects Versions: 1.4.0
            Reporter: Markus Rathgeb


I have build a 1.4.0-SNAPSHOT using the Git sources myself.

The import package section of the manifest looks like this one (output taken from Karaf bundle:headers command because its well formatted).

{noformat}
Import-Package = 
	javax.crypto,
	javax.crypto.interfaces,
	javax.crypto.spec,
	javax.management,
	javax.security.auth,
	javax.security.auth.callback,
	javax.security.auth.login,
	net.i2p.crypto.eddsa;resolution:=optional;version="[0.1,1)",
	net.i2p.crypto.eddsa.math;resolution:=optional,
	net.i2p.crypto.eddsa.spec;resolution:=optional;version="[0.1,1)",
	org.apache.mina.core.buffer;resolution:=optional;version="[2.0,3)",
	org.apache.mina.core.future;resolution:=optional;version="[2.0,3)",
	org.apache.mina.core.service;resolution:=optional;version="[2.0,3)",
	org.apache.mina.core.session;resolution:=optional;version="[2.0,3)",
	org.apache.mina.transport.socket;resolution:=optional;version="[2.0,3)",
	org.apache.mina.transport.socket.nio;resolution:=optional;version="[2.0,3)",
	org.apache.sshd.agent,
	org.apache.sshd.agent.common,
	org.apache.sshd.agent.local,
	org.apache.sshd.agent.unix,
	org.apache.sshd.client,
	org.apache.sshd.client.auth,
	org.apache.sshd.client.auth.hostbased,
	org.apache.sshd.client.auth.keyboard,
	org.apache.sshd.client.auth.password,
	org.apache.sshd.client.auth.pubkey,
	org.apache.sshd.client.channel,
	org.apache.sshd.client.channel.exit,
	org.apache.sshd.client.config.hosts,
	org.apache.sshd.client.config.keys,
	org.apache.sshd.client.future,
	org.apache.sshd.client.global,
	org.apache.sshd.client.kex,
	org.apache.sshd.client.keyverifier,
	org.apache.sshd.client.scp,
	org.apache.sshd.client.session,
	org.apache.sshd.client.session.forward,
	org.apache.sshd.client.simple,
	org.apache.sshd.client.subsystem,
	org.apache.sshd.client.subsystem.sftp,
	org.apache.sshd.client.subsystem.sftp.extensions,
	org.apache.sshd.client.subsystem.sftp.extensions.helpers,
	org.apache.sshd.client.subsystem.sftp.extensions.openssh,
	org.apache.sshd.client.subsystem.sftp.extensions.openssh.helpers,
	org.apache.sshd.common,
	org.apache.sshd.common.auth,
	org.apache.sshd.common.channel,
	org.apache.sshd.common.cipher,
	org.apache.sshd.common.compression,
	org.apache.sshd.common.config,
	org.apache.sshd.common.config.keys.loader,
	org.apache.sshd.common.digest,
	org.apache.sshd.common.file,
	org.apache.sshd.common.file.nativefs,
	org.apache.sshd.common.file.root,
	org.apache.sshd.common.file.util,
	org.apache.sshd.common.forward,
	org.apache.sshd.common.future,
	org.apache.sshd.common.global,
	org.apache.sshd.common.helpers,
	org.apache.sshd.common.io,
	org.apache.sshd.common.io.mina,
	org.apache.sshd.common.io.nio2,
	org.apache.sshd.common.kex.dh,
	org.apache.sshd.common.keyprovider,
	org.apache.sshd.common.mac,
	org.apache.sshd.common.random,
	org.apache.sshd.common.scp,
	org.apache.sshd.common.scp.helpers,
	org.apache.sshd.common.session,
	org.apache.sshd.common.session.helpers,
	org.apache.sshd.common.signature,
	org.apache.sshd.common.subsystem.sftp,
	org.apache.sshd.common.subsystem.sftp.extensions,
	org.apache.sshd.common.subsystem.sftp.extensions.openssh,
	org.apache.sshd.common.util,
	org.apache.sshd.common.util.closeable,
	org.apache.sshd.common.util.io,
	org.apache.sshd.common.util.logging,
	org.apache.sshd.common.util.net,
	org.apache.sshd.common.util.security,
	org.apache.sshd.common.util.security.bouncycastle,
	org.apache.sshd.common.util.threads,
	org.apache.sshd.server,
	org.apache.sshd.server.auth,
	org.apache.sshd.server.auth.gss,
	org.apache.sshd.server.auth.hostbased,
	org.apache.sshd.server.auth.keyboard,
	org.apache.sshd.server.auth.password,
	org.apache.sshd.server.auth.pubkey,
	org.apache.sshd.server.channel,
	org.apache.sshd.server.config.keys,
	org.apache.sshd.server.forward,
	org.apache.sshd.server.global,
	org.apache.sshd.server.kex,
	org.apache.sshd.server.keyprovider,
	org.apache.sshd.server.scp,
	org.apache.sshd.server.session,
	org.apache.sshd.server.shell,
	org.apache.sshd.server.subsystem,
	org.apache.sshd.server.subsystem.sftp,
	org.apache.sshd.server.x11,
	org.apache.tomcat.jni;resolution:=optional,
	org.bouncycastle.crypto.prng;resolution:=optional;version="[1.55,2)",
	org.bouncycastle.jce.provider;resolution:=optional;version="[1.55,2)",
	org.bouncycastle.openssl;resolution:=optional;version="[1.55,2)",
	org.bouncycastle.openssl.jcajce;resolution:=optional;version="[1.55,2)",
	org.ietf.jgss,
	org.slf4j;version="[1.7,2)"
{noformat}

Caused by the import of the packages it exports itself with missing version constraints, the bundle could import this packages from another package that exports that one with an incomplete version.

In my environment there are now two sshd bundles installed:
{noformat}
  1 | Active   |  20 | 0.14.0                | mvn:org.apache.sshd/sshd-core/0.14.0
128 | Active   |  80 | 1.4.0.SNAPSHOT        | mvn:org.apache.sshd/sshd-core/1.4.0-SNAPSHOT
{noformat}

As you can see the bundle 128 is using a package that is exported by 1, instead of using it from itself:
{noformat}
> requirements 128
org.apache.sshd.core [128] requires:
------------------------------------
...
osgi.wiring.package; (osgi.wiring.package=org.apache.sshd.common.future) resolved by:
   osgi.wiring.package; org.apache.sshd.common.future 0.14.0 from org.apache.sshd.core [1]
...
{noformat}

This leads to e.g. this exception:
{noformat}
java.lang.NoClassDefFoundError: org/apache/sshd/common/future/VerifiableFuture
{noformat}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)