2014-02-09 79 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

相關問題