gpt4 book ai didi

java - 如何在 Ubuntu 上使用 MySQL 将 java.io.FilePermission 添加(读取)到 my/usr/share/java/mysql-connector-java.jar 中?

转载 作者:行者123 更新时间:2023-11-30 01:25:54 27 4
gpt4 key购买 nike

如何在 Ubuntu 上使用 MySQL 将 java.io.FilePermission 添加(读取)到我的/usr/share/java/mysql-connector-java.jar 中?

我正在尝试让我的 java 程序在网络浏览器中运行。 java 程序使用 MySQL 数据库,我已成功将其转换为 java 小程序,它可以像在 Eclipse IDE 中一样工作。但是,当我尝试在浏览器中查看小程序时,它不起作用,当我尝试使用 appletviewer 运行它时,我收到错误:

“线程“游戏线程”java.security.AccessControlException 中出现异常:访问被拒绝(java.io.FilePermission/usr/share/java/mysql-connector-java.jar 读取)”

我知道为了安全起见,最好在小程序和服务器之间放置一个 servlet,但现在我只想当我使用 appletviewer 和在浏览器中运行小程序时,该小程序能够在我的计算机上运行。

我在论坛上进行了搜索,并检查了以下常见问题:

<小时/>

1)我已经正确设置了类路径(因为当我不将其作为小程序运行时它可以工作,并且因为我没有收到 classNotFound 错误),

2)我认为我的 html 文件是正确的,因为它正确加载了图形和 com.mysql.jdbc.Driver,它看起来像这样:

<HTML>
<HEAD>
<TITLE> MyAppletTitle </TITLE>
</HEAD>
<CENTER>
<APPLET
code="appletname"
archive="/usr/share/java/mysql-connector-java.jar"
WIDTH=1300 HEIGHT=700>
</APPLET>
</CENTER>
</HTML>

3)我已经尝试了“/etc/java-6-openjdk/security”文件夹中java.policy文件的各种变体,它对我在那里写的内容使用react,所以我知道它是正确的java版本(不是java-7...),但无论我授予什么权限,我都会得到相同的访问被拒绝。我尝试过:

grant codeBase "file:/usr/share/java/*" {
permission java.security.AllPermission;
};

grant codeBase "file:/usr/share/java/mysql-connector-java.jar" {
permission java.security.AllPermission;
};

grant codeBase "file:/usr/share/java/mysql-connector-java.jar" {
permission java.util.PropertyPermission "java.home", "read";
};

grant codeBase "file:/home/myusername/PathToApplet/*" {
permission java.security.AllPermission;
};

grant codeBase "file:/home/myusername/PathToApplet/*" {
permission java.util.PropertyPermission "java.home", "read";
};

4)我尝试对所使用的 .jar 文件进行签名,但在这里我遇到了一些问题:-我无法签署位于/usr/share/java/中的 jar 文件(我认为我不应该这样做?),-我的小程序不是可运行的 jar 文件,因此我不确定对我使用 Eclipse 创建的提取的 .jar 文件进行签名有什么好处。

5)我已经检查了MySQL数据库对我创建的数据库的授予(权限),它应该是这样,因为它在Eclipse中工作并且当我不将Java程序作为小程序(而是作为JFrame)运行时,除非 appletviewer 尝试以其他方式进行连接,而不是我告诉程序在某些奇怪的端口或其他端口上进行连接?

6)我已经看到你可以用一些 doPrivileged 的​​东西包装你的代码,但我不知道如何做到这一点。当我尝试使用命令加载 com.mysql.jdbc.Driver 时,发生访问被拒绝错误Class.forName(dbClassName);代码片段如下所示:

private static int[] GetWordIDs(int[] userinput) throws ClassNotFoundException,    SQLException {
String dbClassName = "com.mysql.jdbc.Driver";
String url ="jdbc:mysql://127.0.0.1/DataBase1";

// Problems here, surround with doPrivileged something??
Class.forName(dbClassName);
.
.
.

我如何围绕这个包装一些 doPrivileged 的​​东西?

7) Eclipse 正在做一些事情,使小程序在没有任何 java.io.Filepermission 问题的情况下工作,我查看了它创建的 .classpath 和 .project 文件,但我不知道如何处理这些文件,也许我必须以某种方式使用这些?

8)我什至将 mysql-connector-java-5.1.16-bin.jar 文件复制到我的类路径中,但这也没有帮助。

<小时/>

我已经在这些问题上苦苦挣扎了一段时间,非常感谢您能提供的任何帮助!

最佳答案

java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/java/mysql-connector-java.jar read

这意味着您需要:

  1. 将覆盖该文件或目录的 AllPermission 添加到小程序执行时处于 Activity 状态的 .policy 文件中。
  2. 添加显式 java.io.FilePermission read 同上。

    这并不意味着任何其他内容。因此,您的大部分帖子都是无关紧要的:具体来说,您的观点 1、2、5、6 和 7。

  3. 对 JAR 文件进行签名。这是迄今为止最好的解决方案。它解决了这个问题和许多其他问题。您的“小程序不是可运行的 jar 文件”这一事实与您是否应该对其进行签名无关。

关于java - 如何在 Ubuntu 上使用 MySQL 将 java.io.FilePermission 添加(读取)到 my/usr/share/java/mysql-connector-java.jar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com