【发布时间】:2014-03-06 11:52:14
【问题描述】:
我无法运行在 IntelliJ IDEA ide 中运行良好的 java 程序。当我运行相同的代码(删除包后..)时出现的错误如下
Exception in thread "main" java.lang.NoClassDefFoundError: fcrypt
Caused by: java.lang.ClassNotFoundException: fcrypt
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我在主方法中所做的只是创建主类的一个实例并调用几个方法。仅包含标题和主要方法的代码如下
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
/**
* Created by Aditya Rao on 05/02/14.
*/
public class fcrypt {
private static final String RSA_NONE_PKCS1PADDING = "RSA/None/PKCS1Padding";
static {
Security.addProvider(new BouncyCastleProvider());
}
....
public static void main (String[] args) throws Exception {
if (args.length != 5) {
System.out.print("Invalid parameters. ");
printUsage();
System.exit(1);
}
if (!(args[0].equals("-e") | args[0].equals("-d"))) {
System.out.print("Please specify usage. ");
printUsage();
System.exit(1);
}
fcrypt f = new fcrypt();
String[] inputs = Arrays.copyOfRange(args, 1, args.length);
if (args[0].equals("-e"))
f.encryptAndSign(inputs);
else
f.verifyAndDecrypt(inputs);
}
}
我错过了什么吗?
编辑我使用以下命令编译并运行此程序
javac -cp libs/bcprov-jdk15on-150.jar fcrypt.java
java -cp libs/bcprov-jdk15on-150.jar fcrypt <args>
【问题讨论】:
-
听起来像是en.wikipedia.org/wiki/Classpath_(Java) 问题。确保在执行 jar 时将类路径传递给。 IntelliJ 可能会自动附加它。 intellij 正在执行的确切命令行是什么?当您运行应用程序时,它应该在一个小终端提示符中显示
-
我有 bouncycastle jar,但我添加了适当的类路径来编译和运行程序。我已经用命令编辑了问题。
-
fcrypt 有构造函数吗?如果删除 fcrypt f = new fcrypt(); 会发生什么从内部主要?错误有变化吗?
-
有趣,我还以为是因为这条线。现在,删除该行后,我得到了同样的错误。所以这是一个类路径问题,但它与我包含的库有什么关系吗?
标签: java command-line classpath