2016-04-22 2 views
-1

間違いを発見する手助けをしてください。 私はクラスファイルを持っています。私はこのクラスのバイトコードを取得し、それをシーザー暗号で暗号化します。 、 コピー&ロードファイル

  • クラスファイルを、我々は暗号化:

    1. クラスファイル:私は、コマンドプロンプトのいくつかの引数を持って、我々はのバイトコードのすべての番号に追加番号:ここでの出力は
    2. キーを送信します最初の引数は です。

    私は単に最初の引数をゼロキーで暗号化し、出力は2番目の引数に送信し、次に2番目のファイル(2番目の引数)を実行します。

    私がコンパイル:

    javac Caesar.java 
    

    ラン:

    java Caesar HelloWorld.class Hello1.class 0 
    

    (注意 - 私はゼロキーを使用するので、ファイルを変更する必要はありません)

    そして第二に、ファイルを実行し、そして私はそのような間違いを見る:

    [email protected] ~/zagruzchik $ java Hello1 Exception in thread "main" java.lang.NoClassDefFoundError: Hello1 (wrong name: HelloWorld) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

    私のソースコード:あなたはもっと根本的な問題があるファイルを暗号化する方法の他に

    import java.io.*; 
    import static java.lang.System.out; 
    
    /** 
    encript by caesar chipher 
    */ 
    public class Caesar { 
        public static void main(String[]args) { 
         if (args.length == 3) 
         { 
         } 
         else { 
          System.out.println("USAGE: java Caesar in out key"); 
          return; 
         } 
         try (//class which will be ciphered 
          FileInputStream in = new FileInputStream(args[0])) { 
           //in output will go encripted byte code of file 
           FileOutputStream out = new FileOutputStream(args[1]); 
           //this is key 
           int key = Integer.parseInt(args[2]); 
           int ch; 
    
           //in cycle encript byte code 
           while ((ch = in.read()) != -1) { 
            byte c = (byte)(ch + key); 
            out.write(c); 
           } 
          } 
         catch(IOException exception) 
         { 
         } 
         out.close(); 
        } 
    } 
    
  • +0

    ブラケットの使用に関するコードが現在間違っています。私はそれを書式化しようとしましたが、この行は問題を引き起こしていました。あなたがどこにいるのかわからなかった: 'try(//暗号化されるクラス' – Draken

    答えて

    0

    この例外で現れる

    I want simply to encrypt the first argument with a zero key, output will transmit to second argument, and then I want to run a second file (second argument).

    $ java Hello1 
    Exception in thread "main" 
    java.lang.NoClassDefFoundError: Hello1 (wrong name: HelloWorld) 
    

    class*.classファイル名に等しくなければなりません。クラス名がHelloWorldの場合は、名前がHelloWorld.classのクラスファイルに格納されている場合にのみ使用できます。

    ファイル名をHello1.classに変更すると、Java仮想マシンにクラスHello1を実行するように指示しても、このクラスにはファイルHello1.classが保存されません。

    関連する問題