2016-09-29 1 views
0

У меня есть это в терминале. Когда я вызываю это из домашнего каталога, проблем нет, он отлично работает. Но когда я помещаю это в подкаталог CPS3498 и скомпилируем его, нет ошибки. Когда я пытаюсь сделать java home/student/pshivam/CPS3498/encrypt запустить программу она дает мне эту ошибкуКак получить код Java для компиляции в каталоге

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 

код следующим образом.

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

Если у вас нет пакета, указанный для encrypt класса, то вы должны быть в состоянии запустить его из любого каталога с помощью java encrypt из каталога, где находится файл .class находится.

Если вы указали следующий пакет:

package home.student.pshivam.CPS3498 

, то вы бы построить из корневой директории выше home (предположительно \, если вы используете Linux). Затем вы должны запустить программу снова из корневого каталога с помощью

java home.student.pshivam.CPS3498.encrypt 

Кстати, об именах в Java является то, что имена классов должны начинаться с Captial буквы, т.е. использовать Encrypt вместо encrypt.

Смежные вопросы