2012-01-12 173 views
0

我需要开发一个可以支持任何版本的服务器的客户端。每次使用客户端连接新服务器时,都会在客户端上存储适当的服务器信息,并且需要将类服务器设置为当前服务器特定的类路径位置。基于服务器版本类路径需要设置。我正面临动态设置这个类路径。我总是得到ClassNotFound异常。你能否建议我如何实现这一目标?动态设置类路径

+1

更多细节将不胜感激。这台新服务器是否在另一台机器上?这看起来像是一个部署问题。你用什么来部署? – fge 2012-01-12 10:56:28

+0

您正在尝试做什么RMI(通过网络更新软件版本)或Java WebStart? – 2012-01-12 10:58:26

回答

0

类路径不能在运行时动态设置。你可以在这里做两件事:熟悉OSGi或编写你自己的类加载器。 对于这个特殊的例子,写自己的类加载器会更容易。你在服务器特定的类路径中保留什么?类,资源,什么?一些细节可以帮助。

+0

在服务器的特定classpath中我将罐子性文件,该文件是特定于服务器的特定版本。 – user1145302 2012-01-12 11:33:49

+0

所以你需要从运行时加载瓶子的clasess?试试这里http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime – 2012-01-12 11:40:12

0

我不知道究竟是你想什么来实现,但假设你有所有在您的客户机需要的库,你只是试图基于特定参数在运行时更改类路径从服务器接收,那我就去ClassWorlds

我会尝试定义一组使用ClassWorlds'配置文件和客户端的主类类领域的将实施using the ClassWorld argument in the main method。然后,从服务器收到的参数将是任何这些领域的名称。因此,在阅读领域参数之后,您只需要将switch the current thread's classloader添加到由ClassWorlds为特定领域创建的参数。