相关疑难解决方法(0)

Java - 如何加载同一个类的不同版本?

我已经阅读了很多关于Java类加载器的内容,但到目前为止我还没有找到这个简单问题的答案:

我在jars v1.jar和v2.jar中有两个版本的com.abc.Hello.class.我想在我的应用程序中使用它们.这样做最简单的方法是什么?

我不希望那么简单,但沿着这些方向的东西会很棒:

Classloader myClassLoader = [magic that includes v1.jar and ignores v2.jar]
Hello hello = myclassLoader.load[com.abc.Hello]
Run Code Online (Sandbox Code Playgroud)

而在另一个班级:

Classloader myClassLoader = [magic that includes v2.jar and ignores v1.jar]
Hello hello = myclassLoader.load[com.abc.Hello]
Run Code Online (Sandbox Code Playgroud)

我想避免使用OSGi.

java jvm class classloader

36
推荐指数
2
解决办法
2万
查看次数

调用本机方法时JVM必须做什么?

在调用声明为的Java方法时,JVM运行时必须执行的常规步骤是native什么?

HotSpot 1.8.0 JVM如何实现JNI函数调用?涉及哪些检查步骤(例如返回后未处理的异常?),JVM要执行哪些簿记(例如本地参考注册表?),以及在调用本机Java方法后控制在哪里?如果有人可以提供本机HotSpot 1.8.0代码的入口点或重要方法,我也将不胜感激.

免责声明:我知道我可以自己阅读代码,但事先的解释有助于快速找到我的代码.此外,我发现这个问题值得谷歌搜索.;)

java java-native-interface jvm

16
推荐指数
1
解决办法
3281
查看次数

从JAR中提取并加载DLL

我的Java应用程序使用DL​​L库.如何从JAR文件中获取它?

DLL位于项目的sources文件夹中.我必须将它包含在我的JAR中,在运行时提取它(在jar的同一目录中)并加载它.

java dll java-native-interface jar

15
推荐指数
1
解决办法
2万
查看次数

加载共享库的两个实例

对于测试,我想从应用程序加载两个共享库实例.库中的代码提供了API,但它不允许我初始化库的两个(或更多)实例,因为某些函数依赖于静态变量.

我正在为这个lib编写单元测试,我想有两个实例,因为这会简化我的测试.

该库未链接到该程序.相反,我使用LoadLibrary/GetProcAddress(或Linux上的dlopen/dlsym)直接加载它.为了区分这两个库,我可以简单地为我正在加载的函数指针使用不同的名称...

以下是问题:

  • 是否可以加载这样的库两次?例如,库的所有已加载实例应该获得自己的数据段,并且不会相互影响.

  • 如果是这样:这对于Windows和Linux来说是否可移植?

c linux windows dll

13
推荐指数
1
解决办法
5993
查看次数

标签 统计

java ×3

dll ×2

java-native-interface ×2

jvm ×2

c ×1

class ×1

classloader ×1

jar ×1

linux ×1

windows ×1