Java 编写并加载文件
请帮我找出一个错误。 我有一个班级档案。我取这个类的一个字节码,用凯撒密码加密。我有几个命令提示符参数:Java 编写并加载文件,java,load,bytecode,caesar-cipher,Java,Load,Bytecode,Caesar Cipher,请帮我找出一个错误。 我有一个班级档案。我取这个类的一个字节码,用凯撒密码加密。我有几个命令提示符参数: 类文件:我们对其进行加密 类文件:输出将在其中传输 键:我们添加到每个字节码中的数字 第一个论点 我只想用零密钥加密第一个参数,输出将传输到第二个参数,然后我想运行第二个文件(第二个参数) 我汇编: javac Caesar.java 运行: (注意-我使用零键,所以不应该更改文件) 然后运行第二个文件,我看到这样的错误: julia@julia-Aspire-5680~/zagruzch
javac Caesar.java
运行:
(注意-我使用零键,所以不应该更改文件)
然后运行第二个文件,我看到这样的错误:
julia@julia-Aspire-5680~/zagruzchik$java Hello1中的异常
线程“main”java.lang.NoClassDefFoundError:Hello1(错误名称:
HelloWorld),位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:800)
security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
在java.net.URLClassLoader.access$100(URLClassLoader.java:71)
java.net.URLClassLoader$1.run(URLClassLoader.java:361)位于
java.net.URLClassLoader$1.run(URLClassLoader.java:355)在
java.security.AccessController.doPrivileged(本机方法)位于
java.net.URLClassLoader.findClass(URLClassLoader.java:354)位于
loadClass(ClassLoader.java:425)位于
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)位于
loadClass(ClassLoader.java:358)位于
launcher.LaunchHelper.checkAndLoadMain(LaunchHelper.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();
}
}
除了要加密文件的方式之外,还有一个更基本的问题 我只想用零密钥加密第一个参数,输出将传输到第二个参数,然后我想运行第二个文件(第二个参数) 这体现在这个例外中
$ java Hello1
Exception in thread "main"
java.lang.NoClassDefFoundError: Hello1 (wrong name: HelloWorld)
class
名称必须等于*.class
文件名。如果您的类名为HelloWorld
,则仅当它存储在名为HelloWorld.class
的类文件中时,才能使用它
如果您将文件重命名为
Hello1.class
,它将不起作用,因为您指示Java虚拟机执行classHello1
,但未存储此类。文件Hello1.class
您的代码当前在括号用法方面不正确。我试图格式化它,但这一行引起了一个问题,我不确定你的{
应该去哪里:try(//将被加密的类
$ java Hello1
Exception in thread "main"
java.lang.NoClassDefFoundError: Hello1 (wrong name: HelloWorld)