2016-09-29 3 views
0

나는 이것을 터미널에 가지고있다. 홈 디렉토리에서 이것을 호출하면 아무 문제없이 완벽하게 작동합니다. 하지만 이것을 하위 디렉토리 CPS3498에 넣고 컴파일하면 오류가 없습니다. 나는 다음과 같이 나에게이 오류디렉토리에서 컴파일 할 자바 코드를 얻는 방법

Exception in thread "main" java.lang.NoClassDefFoundError: /home/student/pshivam/CPS3498/encrypt 
Caused by: java.lang.ClassNotFoundException: .home.student.pshivam.CPS3498.encrypt 
    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) 
Could not find the main class: /home/student/pshivam/CPS3498/encrypt. Program will exit 

코드를 제공하는 프로그램을 실행 java home/student/pshivam/CPS3498/encrypt을하려고합니다. 당신이 encrypt 클래스에 지정된 패키지가없는 경우

import java.lang.ClassNotFoundException; 
    import java.io.BufferedReader; 
    import java.io.BufferedWriter; 
    import java.io.File; 
    import java.io.FileReader; 
    import java.io.FileWriter; 
    import java.io.IOException; 

    public class encrypt { 

     public static void main(String[] args) throws IOException { 
      try { 
       File file = new File("/home/student/pshivam/CPS3498/letter.txt"); 
       FileReader fileReader = new FileReader(file); 
       BufferedReader bufferedReader = new BufferedReader(fileReader); 
       StringBuffer stringBuffer = new StringBuffer(); 
       String line; 
       while ((line = bufferedReader.readLine()) != null) { 
        stringBuffer.append(line); 
        stringBuffer.append("\n"); 
       } 
       fileReader.close(); 
       for(int i = 0; i<stringBuffer.length(); i++){ 
        int encrypt = 0; 
        encrypt = (int)stringBuffer.charAt(i); 
        encrypt = encrypt * 9; 
        stringBuffer.setCharAt(i, (char)encrypt); 
        File message = new File("/home/student/pshivam/CPS3498/secret.txt"); 
        try 
        { 
         message.createNewFile(); 
         FileWriter msgFile = new FileWriter(message); 
         BufferedWriter msgBuff = new BufferedWriter(msgFile); 
         msgBuff.write(stringBuffer.toString()); 
         msgBuff.close(); 
        } 
        finally 
        { 

        } 
       } 

      } finally{ 

      } 


     } 
    } 
+0

이 소스 파일에 패키지가 있습니까? –

+0

@TimBiegeleisen 패키지가 없습니다. – Shiv

+0

이 코드와 비슷한 코드를 가지고 있지만 그냥 해독합니다. – Shiv

답변

0

, 당신은 .class 파일이있는 디렉토리에서 java encrypt를 사용하는 디렉토리에서 실행할 수 있어야합니다. 다음과 같은 패키지를 지정했다면

: (당신이 리눅스를 사용하는 경우 아마도 \)

package home.student.pshivam.CPS3498 

은 다음 home 위의 루트 디렉토리에서 구축 할 것입니다. 그런 다음, 즉, 캐피탈 문자로 시작 encrypt보다는 Encrypt를 사용해야 자바 클래스 이름을 규칙입니다 명명, 그런데

java home.student.pshivam.CPS3498.encrypt 

를 사용하여 루트 디렉토리에서 프로그램 다시를 실행하는 것입니다.

관련 문제