在服务器端运行.exe

时间:2010-07-02 14:52:50

标签: java google-app-engine

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

  

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

这就是错误打印的内容>“错误===拒绝访问(java.io.FilePermission”ALL FILES“执行)”

我甚至试图通过更改文件的安全权限 更改java.policy文件(Here)但它仍然提供相同的错误。我添加了这些行 -

  

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

我有 还试图把它放在/ war / WEB-INF下但是徒劳无功。在网上搜索引发了一个事实,谷歌应用程序引擎可能是这个的原因。 有人可以帮我这个吗? 附:我看到了一篇类似的帖子(Here ),提到在服务器端应该可以这样做。

3 个答案:

答案 0 :(得分:3)

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

引用Google App Engine java overview page

  

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

答案 1 :(得分:1)

您的问题不是GWT,而是应用引擎开发环境。 Google App Engine环境的设计考虑到了可扩展性,因此应用程序完全从服务器硬件到操作系统的各个方面进行了抽象。

总之,你在尝试GAE是不可能实现的。

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

如果您的目标是在App Engine上运行,那么您就完全朝着错误的方向前进了。你想要实现的目标是不可能的。

答案 2 :(得分:0)

你是否意识到谷歌到处运行Linux?另外,在Java或Python中你究竟不能做什么需要Windows原生应用程序?