0

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

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

但仅针对 2 个功能,我需要对所有我不想做的 ssh 相关功能进行全面返工。
所以我有以下疑问: -

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

2 回答 2

1

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

假设有 2 个包,com.package1.A它们com.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();
}
}
于 2014-02-24T08:57:41.027 回答
1

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

大概是。但是您需要尝试一下才能确定。

有矛盾的两件事是:

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

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

2)这有意义吗?

可能。但是 IMO,找到并修复根本问题2或重新编码应用程序以使其确实需要两个缺失的功能更有意义。

3) 如果我保持 j2ssh 原样并且只为这两个函数加载 vngx-ssh 会怎样?可能吗?

这取决于你的意思。如果您使用这两个库进行单独的连接,那么这可能会起作用。

怎么做 ?有什么例子吗?

这取决于你的问题的细节。(但是您不太可能找到示例,因为您正在做的事情听起来像是一种劣等方法……)


1 - 如果这是一个问题,可以使用类加载器魔法来解决名称冲突,但你应该只作为最后的手段。

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

于 2014-02-24T09:00:44.617 回答