I am writing a Topic Modeling program using Apache Tika to extract the text contents from other file type. Actually It run perfectly on Eclipse. But when I export to JAR file to use from command prompt of the Window 10. This error message appear when it try the code: "parser.parse(stream, handler, metadata, parseContext);"
"java.lang.SecurityException: Prohibited package name: java.sql"
I didn't upload my java code here because I don't think they are the root of the problem. Since it run perfectly inside Eclipse IDE. So do anyone know why it only happen when I try to run it from command line. What are the different in JVM between inside and outside of Eclipse IDE? Thank you.
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)