netbeans - Netbeans.conf:用户主页的变量是什么?
问题描述
在启动 Netbeans 时,我需要添加一个名为 mEnvironment 的系统属性,并将其设置为用户家的子目录。示例:在 netbeans.conf 中,我想添加:
netbeans_default_options="-J-XX:+UseStringDeduplication -J-Xss2m -J-DmEnvironment=${USER_HOME}/mySubDirectory ......
USER_HOME 当然是作为示例给出的。
有人知道 Netbeans 如何在 netbeans.conf 文件中获取用户主目录吗?
谢谢
保罗
解决方案
有人知道 Netbeans 如何在 netbeans.conf 文件中获取用户主目录吗?
该过程很复杂,并且因操作系统而异,但在netbeans.conf本身中有详细描述。这是我安装 Apache NetBeans 11.1 的相关内容:
# On Windows ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "<AppData>\NetBeans" where <AppData> is user's
# value of "AppData" key in Windows Registry under
# "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
# and ${DEFAULT_CACHEDIR_ROOT} will be replaced by the launcher
# with "<Local AppData>\NetBeans\Cache" where <Local AppData> is user's
# value of "Local AppData" key in Windows Registry under
# "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
#
# On Mac ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "~/Library/Application Support/NetBeans" and
# ${DEFAULT_CACHEDIR_ROOT} with "~/Library/Caches/NetBeans"
#
# On other systems ${DEFAULT_USERDIR_ROOT} will be replaced by the launcher
# with "~/.netbeans" and ${DEFAULT_CACHEDIR_ROOT} with "~/.cache/netbeans"
....
netbeans_default_userdir="${DEFAULT_USERDIR_ROOT}/11.1"
但是,这些都不能真正帮助您,因为您无法访问netbeans_default_userdir
or的值DEFAULT_USERDIR_ROOT
;它们由 NetBeans 本身在内部使用,而不是系统属性。您可以通过显示返回的值来验证这一点System.getProperties()
;没有显示netbeans.conf中的任何条目。
此外,您无法在netbeans.conf中有意义地添加新的名称/值对;您只能修改 NetBeans 使用的名称的值。该文件用于 NetBeans 配置,而不是用户配置。因此,如果您添加包含(比如说)的行,MyConfSetting="ABC"
那么 NetBeans 将简单地忽略它,并且您也无法访问它。
但是,您可以使用另一种方法在应用程序中为您的目录设置系统属性:
- 只读环境变量
APPDATA
指向您(操作系统的)用户目录。在我的 Windows 10 机器上,它具有C:\Users\johndoe\AppData\Roaming
. - NetBeans 的默认用户目录是 APPDATA 的值 + 一个名为
NetBeans
的子目录 + 一个名为 NetBeans 版本的子目录。在我的机器上是C:\Users\johndoe\AppData\Roaming\NetBeans\11.1
. 在帮助 > 关于屏幕中查看用户目录的值以进行确认。
我不知道如何动态确定 NetBeans 的版本,但如果这不重要,您可以以编程方式创建一个系统属性,指定您的目录路径:
String dir = System.getenv("APPDATA") + "\\NetBeans\\mySubDirectory";
System.setProperty("myDir", dir);
System.out.println("myDir=" + System.getProperty("myDir"));
在我的机器上println()
显示呼叫myDir=C:\Users\johndoe\AppData\Roaming\NetBeans\mySubDirectory
。我不知道这种方法是否满足您的要求,但我不知道有任何其他简单的方法来动态设置您的目录名称。
笔记:
- 我在 Windows 10 上进行了检查。其他操作系统的详细信息可能会有所不同,但总体方法应该仍然有效。
- 您还可以在运行时使用{project} > Properties > Run > Arguments (eg
arg1=%APPDATA%\NetBeans\MyDir
) 和{project} > Properties > Run > VM Options (eg-Dvmopt1=%APPDATA%\NetBeans\MyDir
) 指定参数,但这种方法不起作用,因为它%APPDATA%
被简单地视为文字 "%APPDATA%" 而不是评估为环境变量。
推荐阅读
- python - 如何从字典的输出中删除括号
- python - 如何找到两个元组之间的共同元素
- python - python - 如何将csv文件中的列转换为python中的数组,第一个值是数组变量名?
- aws-cdk - 是否可以创建自定义 cdk init 模板以将 pipenv 用于我的 python 项目?
- c - 警告:格式“%d”需要“int *”类型的参数,但参数 3 的类型为“uint8_t * {aka unsigned char *}
- python - Python:NameError:未定义全局名称“nt”
- python - Python open3D没有属性'create_coordinate_frame'
- java - Vector中的对象无法转换为int
- html - 使用css并排对齐两个div,div包含点图标和文本
- python - 通过 IPv6 使用 Scapy 的 DNS 请求