![](/img/trans.png)
[英]Import java.nio.file.Files and com.google.common.io.Files in 1 file is not allowed
[英]com.google.apphosting.runtime.security.shared.stub.java.nio.file.Files
我正在使用Google App Engine并尝试运行Cron工作,这是成功的。 但是我面临一个例外,任何人都可以通过以下例外指导我:
Error for /cron/fetchnewfiles
java.lang.NoClassDefFoundError: Could not initialize class com.google.apphosting.runtime.security.shared.stub.java.nio.file.Files
at com.google.appengine.runtime.Request.process-cbe3f36b744636fe(Request.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:44)
at com.google.api.client.util.IOUtils.isSymbolicLink(IOUtils.java:193)
at com.google.api.client.util.store.FileDataStoreFactory.<init>(FileDataStoreFactory.java:56)
at com.demo.gapps.server.Utils.authorize(Utils.java:283)
at com.demo.gapps.server.FetchNewFilesCron.getDriveService(FetchNewFilesCron.java:242)
at com.demo.gapps.server.FetchNewFilesCron.doGet(FetchNewFilesCron.java:96)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:446)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:453)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:276)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:312)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:304)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:450)
at java.lang.Thread.run(Thread.java:745)
根据错误日志, java.lang.NoClassDefFoundError: org.jcp.xml.dsig.internal.dom.XMLDSigRI is a restricted class.
。 看一下Sandbox restriction
。 堆栈跟踪显示java.lang.reflect,因此可能存在与沙箱限制和反射有关的问题。
受保护的“沙盒”环境将您的应用程序隔离,以实现服务和安全性。 它确保应用程序只能执行不会干扰其他应用程序的性能和可伸缩性的操作。 例如,应用程序无法以某种方式生成线程,将数据写入本地文件系统或建立任意网络连接。 应用程序也不能使用JNI或其他本机代码。 JVM可以执行在沙箱限制内运行的任何Java字节码。
App Engine平台提供了您的代码可以调用的许多服务 。 您的应用程序还可以配置按指定间隔运行的计划任务 。
创建cron作业的简单步骤:
appengine-web.xml
)中创建cron.xml文件。 <cron>
条目添加到文件中,并定义作业所需的元素,包括必需的<url>
和<schedule>
元素。 以下示例创建一个日常运行的基本cron作业:
每24小时/ tasks / summary beta每日摘要作业目标规范是可选的,并且是服务/版本的名称。 如果存在,目标将放在应用程序的主机名之前,从而将作业路由到该服务/版本。 如果未指定目标,则作业将在默认服务的默认版本中运行。 *为cron作业的URL创建一个处理程序。 处理程序应执行您要安排的所有任务。 处理程序应使用200到299(含)之间的HTTP状态代码进行响应,以指示成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.