`
feikiss
  • 浏览: 99316 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

[java] change the env in java code

阅读更多
In Java API, there is the method System.getenv(), but no interface to set the env. This is because Java forbid the operation based on platform. But sometimes we need to change the env to finish some unit test. The following way just like a hack but it is ok to unit test:

private void setNewEnvironmentHack(Map<String, String> newenv) throws Exception
	    {
	      Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
	      Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment");
	      theEnvironmentField.setAccessible(true);
	      Map<String, String> env = (Map<String, String>) theEnvironmentField.get(null);
	      env.clear();
	      env.putAll(newenv);
	      Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment");
	      theCaseInsensitiveEnvironmentField.setAccessible(true);
	      Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
	      cienv.clear();
	      cienv.putAll(newenv);
	    }


The following implemented code comes from the stackoverflow, record it here in case we may need it again.
0
0
分享到:
评论

相关推荐

    javaEnv自动设置环境

    javaEnv自动设置环境

    java-dotenv,dotenv是一个从.env文件加载环境变量的模块.zip

    Java-dotenv是一个开源项目,它的主要功能是从名为`.env`的文件中加载环境变量,使得在Java和Kotlin开发环境中可以方便地管理配置信息。这个项目受到了Ruby的dotenv库的启发,将Ruby中的功能移植到了Java和Kotlin...

    JAVA-OPTS参数设置.docx

    JAVA-OPTS参数设置 JAVA-OPTS 是一个变量,用于设置 JVM 相关运行参数。JVM 是 Java Virtual Machine 的缩写,表示 Java 虚拟机。JAVA-OPTS 变量的设置对 Java 应用程序的性能和稳定性具有重要影响。 在设置 JAVA-...

    编译时出现java.lang.OutOfMemoryError Java heap space异常

    ### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...

    DELPHI 7 调用 JAVA 接口

    MethodID := GetMethodID(Env, JavaClass, MethodName, '(...Ljava/lang/String;)Ljava/lang/String;'); if MethodID = nil then Exit; // 调用Java方法 Result := CallStaticObjectMethod(Env, JavaClass, ...

    vc调用java的示例:jni_VC2Java

    例如,可能会有一个函数如`JNIEXPORT void JNICALL Java_com_example_MyClass_nativeMethod(JNIEnv *env, jobject obj)`,这个函数会在Java中被声明为`public native void nativeMethod();`,实现了C++与Java的对接...

    NDK开发之C语言调用Java构造方法、父类方法、返回中文字符串乱码问题案例

    4. **调用Java方法**:有了方法ID,就可以通过`env-&gt;CallObjectMethod`、`env-&gt;CallVoidMethod`等函数调用Java的构造方法或方法。 关于调用Java构造方法,你可以这样做: ```c++ jclass javaClass = env-&gt;FindClass...

    Android中C/C++调用Java代码

    jmethodID java_method = env-&gt;GetMethodID(java_class, "GetJavaString", "()Ljava/lang/String;"); if(java_method == 0) { return env-&gt;NewStringUTF("not find java method!"); } str = (jstring)env-&gt;...

    C语言调用java语言方法

    JNIEXPORT void JNICALL Java_MyJavaClass_callFromC(JNIEnv *env, jobject obj) { // 调用Java方法 (*env)-&gt;CallVoidMethod(env, obj, methodID); } ``` 在这里,你需要获取`methodID`,它是Java方法的ID,...

    java使用ldap修改ad域用户密码

    最后,我们需要安装 JAVA 应用服务器,以便使用 Java 语言连接到 Active Directory 域控制器。 导出域根证书和计算机证书 在安装证书服务后,我们需要导出域根证书和计算机证书,以便使用 Java 语言连接到 Active ...

    Android Studio3.0开发JNI流程------C++调用Java以及Java调用C++,C++/Java互相调用

    # included in the NDK. ${log-lib} ) ``` 现在我们开始编写C++代码。创建`native-lib.cpp`文件,这里我们将实现C++调用Java的方法。首先,我们需要声明Java方法的本地方法ID,然后使用JNIEnv接口调用Java方法: ...

    JAVA中使用LDAP进行用户认证

    JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...

    qt调用JAVA文件示例

    在QT开发Android应用程序时,有时候我们需要利用Java代码来执行Android平台特有的功能,比如访问系统服务、权限管理等。本文将详细讲解如何在QT项目中调用JAVA文件,以实现与Android原生系统的交互。 首先,我们...

    在Qt平台C++和Java代码的交互

    JNIEXPORT void JNICALL Java_com_example_MyClass_doSomething(JNIEnv *env, jobject obj) { // 在这里实现C++的逻辑 } } ``` 然后,通过`javah`工具生成C++的头文件,该文件包含了Java方法到C++函数的映射。这...

    java对LDAP的增删改查

    Java 对 LDAP 的增删改查 Java 语言通过 JNDI(Java Naming and Directory Interface)提供了对 LDAP(Lightweight Directory Access Protocol)的支持,允许开发者通过 Java 语言来操作 LDAP 服务器。LDAP 是一种...

    CcallJava android中C调用Java

    3. **找到Java类和方法**:在JNI函数中,使用`env`指针来查找并调用Java方法。例如,要调用Java类`com.example.MyActivity`中的静态方法`sayHello`,可以这样做: ```c jclass cls = env-&gt;FindClass(...

    ENV快捷键文件.zip

    "env快捷键(中文说明).env"和"env快捷键.env"这两个文件都是用于存储快捷键设置的ENV文件。其中,“env快捷键(中文说明).env”可能包含中文注释,方便不熟悉英文的用户理解各个快捷键的功能。这些文件通常包含了...

    C++库封装JNI接口-实现java调用c++

    JNIEXPORT void JNICALL Java_MyNativeClass_callCppFunction(JNIEnv *env, jobject obj) { // 实现C++函数的逻辑 } ``` `JNIEXPORT`和`JNICALL`是JNI约定的宏,用于指定导出函数的调用约定。`JNIEnv*`指针提供...

    Java实现远程控制

    MBeanServerConnection server = JMXConnectorFactory.connect(new JMXServiceURL(url), env); ``` 7. **客户端连接并操作MBeans**:客户端使用`JMXConnector`连接到服务器,并通过`MBeanServerConnection`对象操作...

Global site tag (gtag.js) - Google Analytics