繁体   English   中英

我可以在我的java代码中使用两个ssh java lib吗?

[英]can I use two ssh java lib in my java code?

我正在使用j2ssh,但由于某些原因(我们无法检测到),我们决定切换到新的ssh lib。

在j2ssh为2个没有给出预期结果的函数,我们必须切换到新的ssh(我发现vngx-jsch合适)

但只有2个功能,我需要做所有ssh相关功能的完全返工,我不想这样做。
所以我有以下疑问: -

  1. 我可以同时使用两个lib吗?
  2. 是否有意义 ?
  3. 如果我保持j2ssh原样并且只为那两​​个功能我将加载vngx-ssh怎么办?
  4. 可能吗?
  5. 怎么做 ? 举个例子?

是的,这是可能的。 您可以使用完全限定名称来解决冲突。 例如:

假设有2个包, com.package1.Acom.package2.B ,它们导出相同的函数func() 在Java程序中,您可以通过调用其中任何一个来使用它们

package com.package1;

public class A {
    public void func() {
       System.out.println("Inside A package's func ");
    }
}

第二个是:

package com.package2;

public class B {
    public void func() {
       System.out.println("Inside B package's func ");
    }
}

然后在一个单独的类中,您可以使用它:

public class App {
    public static void main(String[] args) {
        com.package1.A.func();
        com.package2.B.func();
}
}

1)我可以同时使用两个lib吗?

大概是。 但你需要尝试它才能确定。

这两个反对指示的事情将是:

  • 两个库定义具有相同完全限定类名1或类的类

  • 需要在使用相同端口的两个库中接受应用程序中的ssh连接。

2)有意义吗?

有可能。 但是IMO,找到并修复根问题2或者重新编写应用程序使它确实需要两个缺少的函数更有意义

3)如果我保持j2ssh原样并且只有那些2功能我将加载vngx-ssh怎么办? 可能吗?

这取决于你的意思。 如果使用这两个库进行单独的连接,则可以使用。

怎么做 ? 举个例子?

这取决于您的问题的详细信息。 (但你不太可能找到例子,因为你所做的事听起来像是一种劣等的方法......)


1 - 如果这是一个问题,可以使用classloader magic解决名称冲突,但你应该只做最后的手段。

2 - 这是开源的优势之一。 如果您正在使用的应用程序/库中存在问题,您可以找到并修复它...然后将您的修复程序返回给社区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM