2014-02-09 80 views
1

我无法运行在IntelliJ IDEA ide中正常工作的java程序。我得到当我运行相同的代码(去掉包装后..)如下NoClassDefFoundError在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> 
+0

听起来像是http://en.wikipedia.org/wiki/Classpath_(Java)问题。确保你在执行jar时传递类路径。 IntelliJ可能会自动附加此。 intellij执行的确切命令行是什么?它应该在运行应用程序时在一个小终端提示符中说 – devshorts

+0

我有bouncycastle jar,但是我已经添加了合适的类路径来编译和运行该程序。我用命令编辑了这个问题。 – adifire

+1

fcrypt有一个构造函数吗?如果删除fcrypt f = new fcrypt()会发生什么?从主要内部?错误是否改变? –

回答

2

您必须添加工作表示为.为fcrypt.class位于那里的类路径目录下运行这个程序。

语法在Unix上:

java -cp ".:libs/bcprov-jdk15on-150.jar" fcrypt 

音符元素与:分离。

语法为Windows:

java -cp ".;libs/bcprov-jdk15on-150.jar" fcrypt 

音符元素与;分离。

Java代码风格建议类名以大写字母开头。所以应该是FCrypt.java中定义的class FCrypt

相关问题