首页 > 解决方案 > Netbeans.conf:用户主页的变量是什么?

问题描述

在启动 Netbeans 时,我需要添加一个名为 mEnvironment 的系统属性,并将其设置为用户家的子目录。示例:在 netbeans.conf 中,我想添加:

netbeans_default_options="-J-XX:+UseStringDeduplication -J-Xss2m -J-DmEnvironment=${USER_HOME}/mySubDirectory ......

USER_HOME 当然是作为示例给出的。

有人知道 Netbeans 如何在 netbeans.conf 文件中获取用户主目录吗?

谢谢

保罗

标签: netbeansconfiguration

解决方案


有人知道 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_userdiror的值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%" 而不是评估为环境变量。

推荐阅读