我目前正致力于一个暗示多播连接的Java应用程序。
我的开发机器是Mac,我在连接到多播组时遇到了麻烦。我通过添加参数来修复它-Djava.net.preferIPv4Stack=true
是我正在运行的配置。我无法在运行时将此属性设置为true
,因为JVM在启动时而不是在运行时读取它一次。
我的问题是,当我发布我的应用程序时,我希望用户简单地双击'在图标上,即使用户使用的是Windows,Mac或任何Linux发行版,它也会毫无问题地启动。
所以我的问题是,如何强制JVM使用此参数启动.jar
?有没有办法告诉maven这样做?
非常感谢提前
答案 0 :(得分:0)
因为这是在maven中标记的,
您可以通过脚本传递此类JVM参数。 因此,为每种类型的计算机创建启动脚本。像start.sh for unix start.bat for windows。
使用maven配置文件将正确的机器相关脚本复制到最终工件目录,即目标目录。
答案 1 :(得分:0)
至少对于Mac,在Minecraft上也会发生同样的问题。您可以通过应用程序捆绑包中的import os
target_filaname = os.path.join('c:', 'Errors.csv')
dferror.to_csv(target_filename, index=False)
文件强制使用Java标志。
它看起来像这样...
Info.plist
对于Windows,您可以通过启动脚本或设置</dict>
</plist>
<key>NSHighResolutionCapable</key>
<string>YES</string>
<!-- ######## ADD ONLY CONTENT BELOW THIS LINE ######## -->
<key>LSEnvironment</key>
<dict>
<key>_JAVA_OPTIONS</key>
<string>-Djava.net.preferIPv4Stack=true</string>
</dict>
<!-- ######## ADD ONLY CONTENT ABOVE THIS LINE ######## -->
</dict>
</plist>
的桌面安装程序来设置用户环境变量。
技术是从这里获取的,它提供了更详尽的解释:https://gaming.stackexchange.com/a/320864/199492
如果您尝试直接从_JAVA_OPTIONS=-Djava.net.preferIPv4Stack=true
执行此操作,则需要存根以覆盖的设置检测并重新启动Java。这并非易事,但可以通过将某些Java工具与Runtime.exec(...)
结合使用,并使用提供的参数来完成。
长话短说,如果您分发Java应用程序,则应该分发适当的启动器(通常是安装程序),以便可以控制这些类型的事情。