我正在修复一辆古董车,为此我使用梅赛德斯奔驰的 EPC(电子零件目录)。 (成员(member)资格是免费的,所以那些想要查看我正在谈论的程序的人可以访问here,如果他们想查看的话。)要访问该程序,有一个登录页面,然后是另一个带有链接的页面。单击该链接会下载一个名为 ewa-net.jnlp 的文件,并使用 JavaWS 启动该文件。
我曾经在我的 Linux 系统上使用这个程序并且它有效。我记得我在运行程序之前更改了/etc 目录中的 osname 变量,或者更改了 Firefox 中的操作系统,并在完成后将其更改回来,因此它不会影响任何其他 Java 程序。 EPC 计划在这些条件下运行良好。我强烈怀疑需要 Windows 的原因更多的是一种防御性举措(例如,为了避免责任或避免必须修复多个操作系统上的错误)。
我知道进行这样的更改可能会弄乱程序,但这仅用于浏览零件目录和检查零件图,这有助于确定零件位置或放置或帮助零件人员,因为如果我在调用零件之前进行了研究,我可以帮助他们快速找到零件所在的页面。我不会在磁盘驱动器或其他地方保存数据或修改任何内容(尽管我有时会截取屏幕截图并将其打印出来)。
我无法下载 ewa-net.jnlp 并在需要时运行它。我必须浏览 HTML 登录页面,然后从他们的站点运行该程序,所以我不能只从命令行或类似的东西运行该程序。 (除非我登录后立即使用 JavaWS 来运行它。)
现在我使用 iMac,使用 Snow Leopard。我尝试在这里查找并更改 osname,但没有成功。
现在,每当我需要使用 EPC 时,我都必须在 Parallels 中启动 Windows VM,而我使用 Windows VM 的唯一原因就是为了这个程序。
有什么方法可以欺骗 Java,以便当我运行这个程序时,它认为它是在 Windows 上吗?我知道这可能会崩溃,但由于目录在 Linux 上运行良好,我想至少在 OS X 上尝试一下。
我想也许我可以使用运行 JavaWS 的包装器脚本,但我不太确定该怎么做,而且正如我之前所说,更改 osname 设置似乎不起作用。
有什么可以帮助我欺骗这个程序,让它认为它在 Windows 上吗?
最佳答案
这具体取决于应用 Windows 限制的具体内容。
JNLP 文件可以仅为特定操作系统指定元素,从而有效地将其限制为特定操作系统。因此,如果 JNLP 文件包含类似这样的内容...
<resources os="Windows XP">
<j2se version="1.5+" />
<jar href="/example.jar" />
</resources>
...那么这可能就是阻止您在 Mac OS X 上运行它的原因。查看一下 JNLP 文件(我看不到它,作为非美国居民,我无法自己注册),看看是否是这个原因。如果是的话也许你可以编辑它。为什么你说无法下载ewa-net.jnlp?如果您可以下载 JNLP 文件,请将其编辑为 os="Mac OS X"
,然后双击它来运行它(或右键单击并选择打开方式
> Java Web Start
)。
或者,更改 osname 对您不起作用的原因可能是您在错误的 Java 安装中更改了它。苹果在 Snow Leopard 发布后的某个时候(我认为)移动了 Java 的安装位置。因此,您可能会在以下任一位置找到您的安装:
- /System/Library/Frameworks/JavaVM.framework/Versions
- /System/Library/Java/JavaVirtualMachines
如果您只更新了其中一个位置,则可能还需要在其他位置进行更新。
关于java - 欺骗 Java Web Start 关于操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219311/