Java中的Google应用程序引擎因“AccessControlException:拒绝访问…”异常而崩溃
基本上是通过EclipseJavaWeb项目连接到我的云SQL数据库 检查表 1将我的Google App Engine SDK更新为最新的1.9.34版本 2将我的JDBC com.mysql.JDBC.Driver更新为最新的5.1.38版本 3将JDBC驱动程序添加到构建路径 我根本无法连接到Google Cloud SQL,并因以下错误而崩溃:Java中的Google应用程序引擎因“AccessControlException:拒绝访问…”异常而崩溃,java,mysql,google-app-engine,jdbc,google-cloud-sql,Java,Mysql,Google App Engine,Jdbc,Google Cloud Sql,基本上是通过EclipseJavaWeb项目连接到我的云SQL数据库 检查表 1将我的Google App Engine SDK更新为最新的1.9.34版本 2将我的JDBC com.mysql.JDBC.Driver更新为最新的5.1.38版本 3将JDBC驱动程序添加到构建路径 我根本无法连接到Google Cloud SQL,并因以下错误而崩溃: java.security.AccessControlException: access denied ("java.lang.RuntimeP
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
at java.lang.Thread.init(Thread.java:391)
at java.lang.Thread.init(Thread.java:349)
at java.lang.Thread.<init>(Thread.java:445)
at java.util.TimerThread.<init>(Timer.java:499)
at java.util.Timer.<init>(Timer.java:101)
at java.util.Timer.<init>(Timer.java:146)
at com.mysql.jdbc.ConnectionImpl.<clinit>(ConnectionImpl.java:208)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at com.dinuka.myapp.servlets.PlanServlet.doPost(PlanServlet.java:59)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
请修复这个错误,谷歌团队!同时,有人能帮我度过难关吗?终于!修好了!给任何一个面对这个问题的人。下面是你如何修复它的 第一步:保持你的道德,保持积极相信我,我知道 步骤2:将您的Google App Engine SDK更新为最新版本。从此链接检查最新SDK=> 步骤3:将JDBC驱动程序更新为最新版本。检查此链接的最新版本=> 步骤4:以下是如何正确地将JDBCJAR添加到项目中:复制并粘贴到lib文件夹war/WEB-INF/lib。右键单击Eclipse项目,然后单击构建路径->配置构建路径。单击“addjars”并转到lib文件夹,选择刚才复制的mysql连接器java文件。单击应用并确定 步骤5:清理并构建您的项目 第六步:我不知道这是否必要,但我们还是这样做吧。右键单击项目并转到属性 步骤7:展开“谷歌”部分并选择应用程序引擎。确保选中了启用Google Cloud SQL并选择使用Google Cloud SQL实例单选按钮 步骤8:在单选按钮的右侧,您将看到一个名为“配置”的链接。单击它,用实例名、数据库名等填充字段,然后单击OK 步骤9:在我们前面看到的单选按钮下面,您应该看到另一个名为configure的链接,旁边是一个名为“appenginesqlinstance”的标签。单击configure并像以前一样用实例名、数据库名等填充字段。单击“确定”并关闭“属性”窗口 最后一步:清理并重新构建项目并运行它。如果您正确地遵循了所有步骤,那么您应该连接到功能强大的谷歌云 我花了太多时间才弄明白这一点,我知道我可以用这个答案简化别人的一天。祝你好运
-Dinuka Jayasuriya,未来的谷歌人 终于!修好了!给任何一个面对这个问题的人。下面是你如何修复它的 第一步:保持你的道德,保持积极相信我,我知道 步骤2:将您的Google App Engine SDK更新为最新版本。从此链接检查最新SDK=> 步骤3:将JDBC驱动程序更新为最新版本。检查此链接的最新版本=> 步骤4:以下是如何正确地将JDBCJAR添加到项目中:复制并粘贴到lib文件夹war/WEB-INF/lib。右键单击Eclipse项目,然后单击构建路径->配置构建路径。单击“addjars”并转到lib文件夹,选择刚才复制的mysql连接器java文件。单击应用并确定 步骤5:清理并构建您的项目 第六步:我不知道这是否必要,但我们还是这样做吧。右键单击项目并转到属性 步骤7:展开“谷歌”部分并选择应用程序引擎。确保选中了启用Google Cloud SQL并选择使用Google Cloud SQL实例单选按钮 步骤8:在单选按钮的右侧,您将看到一个名为“配置”的链接。单击它,用实例名、数据库名等填充字段,然后单击OK 步骤9:在我们前面看到的单选按钮下面,您应该看到另一个名为configure的链接,旁边是一个名为“appenginesqlinstance”的标签。单击configure并像以前一样用实例名、数据库名等填充字段。单击“确定”并关闭“属性”窗口 最后一步:清理并重新构建项目并运行它。如果您正确地遵循了所有步骤,那么您应该连接到功能强大的谷歌云 我花了太多时间才弄明白这一点,我知道我可以用这个答案简化别人的一天。祝你好运
-Dinuka Jayasuriya,未来的谷歌人 奇怪的是,5.1.38版的驱动程序在ConnectionImpl.java:208上没有任何与计时器相关的东西-你确定你在使用legit jar吗?你能把我链接到legit jar吗@伊格拉塔莫诺夫特,很遗憾,是的,错误仍然出现@IgorArtamonovon同一行?208?奇怪的是,5.1.38版的驱动程序在ConnectionImpl.java:208上没有任何与计时器相关的东西-你确定你在使用legit jar吗?你能把我链接到legit jar吗@伊格拉塔莫诺夫特,很遗憾,是的,错误仍然出现@IgorArtamonovon同一行?208?
public class MyServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String url = null;
try {
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Load the class that provides the new "jdbc:google:mysql://" prefix.
Class.forName("com.mysql.jdbc.GoogleDriver");
url = "jdbc:google:mysql://app_id:instance_id/data?user=root";
} else {
// Local MySQL instance to use during development.
Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://instance-ip:3306/data?user=root";
}
} catch (Exception e) {
e.printStackTrace();
return;
}
PrintWriter out = resp.getWriter();
try {
Connection conn = DriverManager.getConnection(url);
System.out.println("Connection established");
out.println("Connection established");
try {
} finally {
conn.close();
}
} catch (SQLException e) {
out.append(e.getMessage());
e.printStackTrace();
}
}
}