程序使用过时的(不是当前的)envvariables值【JAVA教程】

!
也想出现在这里? 联系我们
信息

程序使用过时的(不是当前的)envvariables值,第1张

概述程序使用过时的(不是当前的)envvariables值

我有一个内部使用java的C ++程序(通过我的C ++ dll包装了内部使用jvm.dll的WebLogic Jsmc.dll)。

在运行我的程序之前设置CLAsspATH时,find所有JAR库并且程序正常工作。 当我在运行我的程序之前没有设置CLAsspATH时, 没有findJAR,这当然是预期的。

现在,在运行我的程序之前设置CLAsspATH,但是在加载使用java的dll 之前 清除程序代码中的CLAsspATH环境variables,会发生一件奇怪的事情:所有的JAR仍然被find,程序工作起来就好像一切正​​常。 我已经通过几种方式valIDation了CLAsspATH实际上是从envvariables中删除的(例如使用ProcessExplorer或者打印它的值)。

题:

我可以从PHPvariables到我的windows窗体?

批处理脚本parsingDir命令

在windows上相当于$ _SERVER

在windows批处理脚本中使用循环variables作为新variables的一部分

在不同的c文件中访问pthread中的全局variables

你能向我解释这种行为吗? 我不明白为什么java忽略我设置的CLAsspATH,但java 怎么可能看到旧的CLAsspATH值,而不是当前的? 我强调,java不可能以某种方式存储旧的CLAsspATH值,因为在旧的值可用时未加载java。

我怎样才能让java尊重进程envvariables的变化?

细节:

上面的问题只是我为了探究真正的问题而做出的简化。 我试图从程序中设置CLAsspATH,并避免在外部进行设置。 但是java使用了外部设置的CLAsspATH,而不是我在程序中设置的那个。

我使用windows API(GetEnvironmentvariableA,SetEnvironmentvariableA)读取和设置envvariables值。 我已经valIDation了程序进程环境variables在设置之后真的发生了变化。 我甚至在调用任何java方法之前,从使用java的dll打印CLAsspATH值。 我使用ProcessMonitor检查了在删除CLAsspATH 之后 ,jvm.dll真的被加载了。 我也试图排除从父进程读取CLAsspATH的可能性。 现在我很确定在加载jvm.dll的时候,CLAsspATH已经从进程环境中删除了。

我已经尝试了Visual C ++ 2010testing程序和HP LoadRunner C编译器(mmdrv.exe)vuser脚本,结果相同。 LoadRunner是我需要解决这个问题的主要原因。

Oracle环境variables“ORACLE_UNQname”

编辑registry中的环境variables

为什么env不打印PS1variables?

为特定进程的特定运行设置环境variables

用一个string代替shell中的variables

问题是由于C运行库以某种方式缓存了环境变量。 当我试图使用系统函数SetEnvironmentvariableA()修改CLAsspATH时,jmsc.dll从C运行时缓存读取CLAsspATH。 C运行时尝试在进程环境中将其缓存与实际值进行同步,但显然不是很成功。 我需要从C运行时用_putenv()调用SetEnvironmentvariableA()来替换系统调用,以便更改CLAsspATH。

但还有另一个问题。 我的代码使用了不同版本的C运行库,每个版本都有自己的环境缓存。 我的VC代码链接到msvcr100.dll,而jmsc.dll(实例化Java VM)使用msvcrt.dll。 解决方法是将我的代码链接到msvcrt.dll,以便我的代码使用jmsc.dll读取的相同C运行时使用_putenv()设置CLAsspATH。

感谢Harry Johnston的重要提示, Peter Cetinski提供了有价值的信息。

从C ++调用新的JVM进程时,不应该依赖CLAsspATH环境变量。 JNI接口提供了一种机制来在启动时指定JVM的类路径。

请参阅http://java.sun.com/docs/books/jni/HTML/invoke.HTML#28719

总结

以上是内存溢出为你收集整理的程序使用过时的(不是当前的)envvariables值全部内容,希望文章能够帮你解决程序使用过时的(不是当前的)envvariables值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞126 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容