【问题标题】:Running .exe on Server Side在服务器端运行 .exe
【发布时间】:2010-07-02 14:52:49
【问题描述】:

我正在尝试从 GWT 上的服务器端运行 .exe,但它给了我一个拒绝访问错误。确切的错误是:-

java.security.AccessControlException: 访问被拒绝(java.io.FilePermission 执行) 在 java.security.AccessControlContext.checkPermission(未知 来源)在 java.security.AccessController.checkPermission(未知 来源)在 java.lang.SecurityManager.checkPermission(未知 来源)在 com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 在 java.lang.SecurityManager.checkExec(未知 来源)在 java.lang.ProcessBuilder.start(未知 来源)在 java.lang.Runtime.exec(未知来源) 在 java.lang.Runtime.exec(未知 来源)

这就是 error->"error===access denied (java.io.FilePermission "ALL FILES" execute)" 中打印的内容

我什至尝试通过以下方式更改文件的安全权限 更改 java.policy 文件(Here)但它仍然给出相同的错误。我添加了这些行 -

授予{权限 java.io.FilePermission "C:\Documents 和 Settings\User\Desktop\ABCD.exe", “执行”; };

我有 还试图将其放在 /war/WEB-INF 下,但徒劳无功。在网上进行的一些搜索使我发现谷歌应用引擎可能是导致此问题的原因。 有人可以帮我解决这个问题吗?
p.s.我看到了类似的帖子(Here ),其中提到在服务器端应该可以进行类似的操作。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    这与 GWT 无关。您的服务器是 Google App Engine 开发服务器,不允许您在 Google App Engine 上运行可执行文件。

    引用Google App Engine java overview page

    JVM 在安全的“沙盒”环境中运行,以隔离您的应用程序以实现服务和安全性。沙盒确保应用程序只能执行不干扰其他应用程序的性能和可扩展性的操作。例如,应用程序无法生成线程、将数据写入本地文件系统或进行任意网络连接。应用程序也不能使用 JNI 或其他本机代码。 JVM 可以执行任何在沙盒限制内运行的 Java 字节码。

    【讨论】:

    • 那么有什么解决办法吗?如果这件事成功了,我几乎接近完成我的项目......
    • @Manish:根据政策,Google App 引擎不允许执行可执行文件。这不是技术缺陷,而是谷歌有意识的选择。一种选择是将可执行文件的功能编码到 Java 应用程序中。基本上任何在 GAE 上运行服务器端的东西都必须是你的代码。
    • @Manish:这将不会以这种格式工作。您根本无法在 Google App Engine 上执行 .exe 文件。
    • 好吧,我在 Windows 平台上从一些本机代码创建了 .exe。当然,我不能使用普通的 java 代码(或 GWT)来实现该功能。同样如上面文章中提到的那样,JNI 是不可能的。此时重新开始整个事情会令人心碎!:(
    【解决方案2】:

    您的问题不在于 GWT,而在于应用引擎开发环境。 Google App Engine Environment 的设计考虑了可扩展性,因此应用程序完全从服务器硬件到操作系统的所有内容中抽象出来。

    简而言之,您正在尝试的内容在 GAE 上是无法实现的。

    如果这个问题无论如何都与this 相关,并且如果您的目标是快速而肮脏的 GWT 原型并且不打算在 apppot.com 上部署,那么您可以尝试一个没有 GAE 的普通 GWT 项目。 Runtime.exec 命令应该在 jetty 上正常执行,无需任何调整(前提是您创建的 Web 应用程序项目仅使用 GWT 且不支持 GAE)。

    也就是说,如果您的目标是在 App Engine 上运行,那么您完全走错了方向。你想要达到的目标是不可能的。

    【讨论】:

      【解决方案3】:

      您知道 Google 到处都运行 linux 吗?另外,在 Java 或 Python 中,您需要 Windows 原生应用程序的具体情况是什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        相关资源
        最近更新 更多