2014-02-09 5 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) 문제와 유사합니다. 항아리를 실행할 때 classpath를 전달해야합니다. IntelliJ가 자동으로이 항목을 자동으로 추가합니다. intellij가 실행중인 정확한 명령 행은 무엇입니까? 응용 프로그램을 실행할 때 작은 터미널 프롬프트가 표시되어야합니다. – devshorts

+0

나는 bouncycastle jar를 가지고 있지만 프로그램을 컴파일하고 실행하기 위해 적절한 classpath를 추가했습니다. 명령으로 질문을 편집했습니다. – adifire

+1

fcrypt에 생성자가 있습니까? fcrypt를 제거하면 어떻게됩니까? f = new fcrypt(); 메인에서? 오류가 변경됩니까? –

답변

2

당신은 fcrypt.class가이 위치로 클래스 경로에 .로 표시 작업 디렉토리를 추가해야이 프로그램을 실행

편집. 유닉스

구문 :

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

참고 : 요소로 분리된다. Windows 용

구문은 :

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

노트 요소는 ;로 구분됩니다.

Java 코드 스타일은 대문자로 시작하는 클래스 이름을 제안합니다. 따라서 class FCryptFCrypt.java에 정의되어 있어야합니다.

관련 문제