当前位置: 首页 > 知识库问答 >
问题:

“java.lang.SecurityException:禁止包名称:java.sql”仅在Eclipse外部执行时发生错误

贲绪
2023-03-14

我正在编写一个主题建模程序,使用Apache Tika从其他文件类型中提取文本内容。实际上,它在Eclipse上运行得很好。但是当我从窗口10的命令提示符导出到JAR文件使用时。当它尝试代码时会出现以下错误消息:“parser.parse(stream,handler,metadata,parseContext);”

我没有在这里上传我的java代码,因为我不认为它们是问题的根源。因为它可以在Eclipse IDE中完美运行。那么有没有人知道为什么它只发生在我尝试从命令行运行的时候。Eclipse IDE内部和外部的JVM有什么不同?谢谢你。

        package Views;

import java.io.*;
import org.apache.commons.io.FileUtils;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;

public class TestTika {

    public static void main(String[] args) throws IOException {
        String inputFolderName = "data";
        String outputFolderName = "data_text";
        System.out.println("Extracting text data from '" + inputFolderName + "' to '" + outputFolderName + "'");

        FileUtils.deleteDirectory(new File(outputFolderName)); // Delete the old file in this directory
        System.out.println("Delete all of the old files in directory'" + outputFolderName + "' successfully \n");

        if (new File(outputFolderName).mkdir()) {
            System.out.println("Created folder '"+ outputFolderName );
        }

        File inputFolder = new File(inputFolderName);
        File[] listOfFiles = inputFolder.listFiles();

        String fileName;

        for (File file : listOfFiles) {
            if (file.isFile()) {
                fileName = file.getName();
                System.out.println("\n" + fileName);
                BodyContentHandler handler = new BodyContentHandler();
                AutoDetectParser parser = new AutoDetectParser();
                Metadata metadata = new Metadata();
                ParseContext parseContext = new ParseContext();
                FileInputStream stream = new FileInputStream(new File(inputFolderName + "/" + fileName));
                try {

//////////////////////////////////// Error: Prohibited package name: java.sql ////////////////////////////////
//////////////////////////////////// /////////////////////////////////////////////////////////////////////////

                    parser.parse(stream, handler, metadata, parseContext);

                } catch (Exception e) {
                    System.out.println("Warning: Error when processing file:" + fileName
                            + " . This file will be igrored! \n" + e.getMessage() + "\n" + e.toString());
                    e.printStackTrace();
                    continue;
                } finally {
                    stream.close();
                }
                String s = handler.toString();
                Writer writer = null;
                try {
                    writer = new BufferedWriter(new OutputStreamWriter(
                            new FileOutputStream(outputFolderName + "/" + fileName + ".txt"), "utf-8"));
                    writer.write(s);
                } catch (IOException ex) {
                    // report
                    System.out.println("Warning: Error when saving file:" + fileName
                            + ".txt  . This file had been ignore! \n" + ex.getMessage());
                    continue;
                } finally {
                    try {
                        writer.close();
                    } catch (Exception ex) {
                        /* ignore */}
                }
            }

        }
        System.out.println("Extracting text data from document files has been completed!");
        return;

    }

}

java.lang.SecurityException: Prohibited package name: java.sql
        at java.base/java.lang.ClassLoader.preDefineClass(Unknown Source)
        at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
        at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
        at java.base/java.net.URLClassLoader.access$100(Unknown Source)
        at java.base/java.net.URLClassLoader$1.run(Unknown Source)
        at java.base/java.net.URLClassLoader$1.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.net.URLClassLoader.findClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:113)
        at Views.TestTika.main(TestTika.java:43)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

共有1个答案

周苑博
2023-03-14

当您使用以“java”开头的包的类时,会抛出“禁止的包名”。在RT.JAR中找不到的。或者您自己创建了这样一个类,或者您的类路径中有一个包含这样一个类的.jar文件。

如果是前者,则将类放入另一个包中。如果是后者,则尝试找到包含该类的.jar文件(例如,打印出在系统属性java.class.path中找到的类路径)

 类似资料:
  • 我从eclipse编译了jar文件(package required lib...),然后当我运行它时,它给我SecurityException:禁止的包名称:java.sql,当我在eclipse中运行代码时,这不会发生。 我看到很多人指出将其中一个包命名为“java.*”可能会导致问题,但我仔细检查了一下,没有一个包命名为“java.{somthing}”。 以下是完整的错误跟踪: 操作系统:

  • 问题内容: 我创建了一个类“ String”,并将其放置在“ java”包中[实际上,我想创建 java.lang 以查看classLoader将哪个类加载为 一旦将一个类加载到JVM中,就不会再次加载相同的类(我再说一遍,相同的类) 引用于oreilly]。但是后来那件事,为什么在运行此类时我得到 java.lang.SecurityException:禁止的包名称: java 出于安全原因,j

  • 我正在做一个利用sqlite-jdbc-3.21.0.jar驱动程序的多项选择测验。您可以在这里找到它:https://bitbucket.org/xerial/sqlite-jdbc/downloads/ 当我在Eclipse中运行测试时,它不会给出任何错误。当我编译它时,它不会给出任何错误(打包所需的库)。当我在commandprompt中启动jar文件时,我得到的消息是:禁止的包名称:jav

  • 我使用在Ubuntu 12.04上运行的Eclipse EE Juno来测试简单的servlet。因此,我在Eclipse中使用以下命令安装了一个web工具包 当我运行servlet时,内部浏览器会显示我在servlet中使用的html标记。像这样(这个问题在Firefox中不会发生) 下面是servlet的代码 错误在哪里??如何更正此问题?? 非常感谢。

  • **2021-11-26 20:30:57.375警告11700---[restartedMain]ConfigServletWebServerApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂UnsatisfiedPendencyException:创建名为“bookRestController”的bean时出错:未满足

  • 当我试图使用命令: 错误:发生了JNI错误,请检查您的安装并在线程“main”java中重试。lang.NoClassDefFoundError:org/apache/http/client/ClientProtocolException 它在eclipse中运行良好。请帮忙。