我正在编写一个主题建模程序,使用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)
当您使用以“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中运行良好。请帮忙。