Java 编辑Windows环境变量不起作用
如何使用Java代码和在Windows上编辑系统或用户变量?我只发现了一个问题,但似乎没用。为什么以下两个代码段不起作用Java 编辑Windows环境变量不起作用,java,environment-variables,windows-8.1,Java,Environment Variables,Windows 8.1,如何使用Java代码和在Windows上编辑系统或用户变量?我只发现了一个问题,但似乎没用。为什么以下两个代码段不起作用 import com.sun.jna.Library; import com.sun.jna.Native; public class Environment { public interface WinLibC extends Library { WinLibC INSTANCE = (WinLibC) Native.loadLibrary
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Environment
{
public interface WinLibC extends Library
{
WinLibC INSTANCE = (WinLibC) Native.loadLibrary("msvcrt",
WinLibC.class);
public int _putenv(String name);
}
public static void main(String[] args)
{
WinLibC.INSTANCE._putenv("MYVARIABLE=MYVALUE");
}
}
及
没有编写环境变量,什么也不会发生。您不需要JNA来获取环境变量。 System.getenv正是这样做的 另一方面,在Java中设置持久性环境变量通常是个坏主意。它会降低程序的可移植性不同的系统具有不同的环境变量可见性/持久性概念,并且会混淆JVM和实际系统环境之间的区别
当然,如果你一定要,您需要在Linux/Unix和Windows上使用。为什么在关于操作环境变量的问题中向我们展示JNA printf代码?@Andrew Medico:作为映射本机函数的示例。我认为可以安全地假设,能够回答此问题的人不需要调用完全无关函数的示例。@Andrew Medico:当人们不编写Java而编写C或其他程序时,提供一个示例代码是很有用的,并且了解librariesThanks,您发送的代码非常有用。当我想编写一个Java程序来进行持久的环境变量更改时,这不是一个坏主意。我会看看是否能用你的提示让它工作:
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Environment
{
WinLibC clib = (WinLibC) Native.loadLibrary("msvcrt", WinLibC.class);
public Environment()
{
setenv("myVariable", "myValue");
}
public interface WinLibC extends Library
{
public int _putenv(String name);
}
public void setenv(String variable, String value)
{
clib._putenv(variable + "=" + value);
}
public static void main(String[] args)
{
new Environment();
}
}