我正在使用j2ssh,但由于某些原因(我们无法检测到),我们决定切换到新的ssh lib。
在j2ssh中,对于没有给出预期结果的2个函数,我们必须切换到新的ssh(我发现vngx-jsch合适)
但仅限于2个函数,我需要对所有ssh相关函数进行完全返工,这是我不想要的。
所以我有以下疑问: -
答案 0 :(得分: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();
}
}
答案 1 :(得分:1)
1)我可以同时使用lib吗?
可能是的。但你需要尝试它才能确定。
这两个反对指示的事情将是:
两个库定义具有相同完全限定类名 1 或
需要使用相同的端口使用两个库接受应用程序中的ssh连接。
2)有意义吗?
可能。但IMO,它更有意义找到并修复根问题 2 ,或重新编写应用程序,以便它确实需要两个缺少的函数。
3)如果我保持j2ssh原样并且只为那些2功能我将加载vngx-ssh怎么办?有可能吗?
这取决于你的意思。如果使用这两个库进行单独的连接,则可以使用。
怎么做?举个例子?
这取决于您问题的详细信息。 (但你不太可能找到例子,因为你所做的事情听起来像是一种劣等的方法......)
1 - 如果这是一个问题,可以使用classloader magic解决名称冲突,但你应该只做最后的手段。
2 - 这是开源的优势之一。如果您使用的应用程序/库中存在问题,您可以找到并修复它...然后将您的修复程序返回给社区。 sup>