到目前为止,我已经了解了有关java.library.path属性的以下内容:
(如果我误解了上述任何一项,请纠正我)
我的动机:
我想修改Java应用程序从我设置的框架中看到的java.library.path的值来调用Java应用程序.我想这样做不是通过直接设置java.library.path属性,而是通过修改它映射到的系统路径变量.我想要一个干净的方法来做这个没有丑陋的操作系统特定代码或尽可能省略边缘情况.
我的问题:
有没有办法要求本地Java实现java.library.path映射到哪个环境变量?
然后,在shell脚本中,我将能够写出以下内容:
path_var = get_library_path_variable # the magic function I want to call
${path_var} = /my/custom/path:${${path_var}}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个在Windows Vista机器上运行JBoss的J2EE应用程序,但该应用程序最终会在Linux机器上运行.有没有办法以平台无关的方式传递环境变量的值?
我认为(但我不确定)平台敏感的方式是:
-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)
Run Code Online (Sandbox Code Playgroud)
从那里我将使用访问值(在Java中)
System.getProperty("MY_ENV_VAR");
Run Code Online (Sandbox Code Playgroud)
- 那是对的吗?
Javadoc System.getenv(String name)
似乎意味着该方法依赖于平台,但我不清楚这一点.我是否可以完全跳过将变量完全传递到JVM中,并getenv()
在使用操作系统设置环境变量的值后使用?
程序从某种语言编译为ASM - >机器代码(可直接执行).当人们说这是依赖于平台时,二进制文件形成的意思将仅在具有相同指令集架构的CPU(如x86,x86-64)上运行(正确).由于ISA的不同,它可能(不正确)/可能不会(根本没有)在其他进程上运行.对?
现在,二进制的概念令我感到困惑.一切都与"机器语言代码"和"CPU"有关.操作系统在哪里发挥作用?我的意思是编译后的二进制文件在加载到内存时有CPU的直接指令.&CPU一次执行一条指令.除了流程管理链接文本之外,我无法看到操作系统的任何角色.无论操作系统如何,它都应该在同一个ISA的CPU上运行.对?
但事实并非如此.如果我在Windows机器上为x86构建代码.它不能在Mac x86机器或Linux x86机器上运行.
我在这里遗漏了一些东西.请清除我的困惑.
我使用 Windows 计算机进行工作,并为常见任务煞费苦心地设置了许多按键绑定,以及我非常希望将其转移到我的个人计算机(即 Mac)上的许多其他个性化设置。
我最近发现并设置了Settings Sync,这非常棒,但我似乎无法让我的按键绑定按照我想要的方式工作。
首先,我的任何键绑定似乎都没有被转移——当我在 Mac 上打开键盘快捷键并显示用户键绑定时,列表是空的,但当我在 Windows 上执行此操作时,我所有的键绑定都在那里。
更复杂的是,我有时在 Mac 上使用 Windows 键盘。在不涉及太多细节的情况下,我将解释我试图通过特定快捷方式完成的任务:
在 Windows 机器上,我使用右键alt
和ctrl
按键打开我的集成终端:
alt+ctrl+t
我希望即使在 Mac 上也能保持此键绑定正常工作,因为当我使用 Windows 键盘时,键盘右侧仍然有alt
和键。ctrl
但是,在没有 Windows 键盘的 Mac 上,我用alt
和键代替了和键,因此在这种情况下我想触发集成终端。ctrl
cmd
option
cmd+option+t
那么,我的解决方案是简单地重新创建与 Macalt+ctrl
相应cmd+opt
版本一起使用的所有 Windows 快捷方式吗?那么所有丢失的用户键绑定似乎没有与设置同步传输(日志显示它们应该已被传输)呢?如果有人对如何正确设置有任何建议,我将不胜感激。谢谢。