Java,如何制作一个jar来编辑另一个jar

Java,如何制作一个jar来编辑另一个jar,java,file-io,executable-jar,Java,File Io,Executable Jar,我想出了一个主意,为我的学校做一个程序,在那里老师输入问题和答案a、B、C、D等,然后创建一个jar文件,这将是实际的测试程序。现在我知道如何制作这个程序,直到从老师那里收集所有的数据,但是我不知道如何继续。我的想法是,教师的jar将与示例就绪的“测试jar”(其他问题和答案存储在其变量中)位于同一文件夹中,当教师就绪时,他们的jar将只编辑“测试jar”变量,然后他们可以将“测试jar”交给学生,虽然我不知道如何从另一个jar编辑jar文件的代码。我怎样才能做到这一点? 提前谢谢 基本上,ja

我想出了一个主意,为我的学校做一个程序,在那里老师输入问题和答案a、B、C、D等,然后创建一个jar文件,这将是实际的测试程序。现在我知道如何制作这个程序,直到从老师那里收集所有的数据,但是我不知道如何继续。我的想法是,教师的jar将与示例就绪的“测试jar”(其他问题和答案存储在其变量中)位于同一文件夹中,当教师就绪时,他们的jar将只编辑“测试jar”变量,然后他们可以将“测试jar”交给学生,虽然我不知道如何从另一个jar编辑jar文件的代码。我怎样才能做到这一点?
提前谢谢

基本上,jar只是一个Zip文件

Java通过位于

java.util.zip

包裹

您的代码将如下所示:

ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName));

 // Add a zip entry to the output stream
 outStream.putNextEntry(new ZipEntry(myEntryName));

 // add data to your entry by writing to outStream
 ......
 ......
 //Close zip entry and file streams
 outStream.closeEntry();

完整的jar基本上就是一个Zip文件

Java通过位于

java.util.zip

包裹

您的代码将如下所示:

ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName));

 // Add a zip entry to the output stream
 outStream.putNextEntry(new ZipEntry(myEntryName));

 // add data to your entry by writing to outStream
 ......
 ......
 //Close zip entry and file streams
 outStream.closeEntry();

和完整的

如果您试图用可定制的问题和答案进行测验,我建议您使用文本文件存储选项(问题和答案,可能还有诸如多项选择或输入有效值或选择一项之类的问题类型)

对于文件的格式,可以使用xml或简单地使用java.util.Properties,使用其存储和加载保存到文件中

您的属性可以是“totalNumberQuestions”、“question1”“questionType1”“question1选项1”等

现在,在主程序中查找一个文件: *如果progrtam以args.length>0开头,请在单独的try catch中查找arg[0]的文件,因此即使没有,也会显示错误消息并继续

  • 如果在与程序相同的文件夹中未找到或没有名为“data.txt”的参数,则表示: 文件f=新文件(“data.txt”); 如果(f.exists()){//读取输入输出流

  • 从jar getClassLoader()中的类加载器获取else(在java.lang.class中查找实际函数名

通过这种方式,用户可以使用第二个jar创建data.txt,然后将其与询问问题的主jar打包,或者将其保存在同一文件夹中,或者在启动程序时将其作为参数传递

可以使用jar命令重新打包jar

jar ufMv quiz.jar  data.txt
要使用jar创建新的zip,请执行以下操作:

jar cvfM quiz.jar data.txt yourPackage.*.class 

如果您尝试使用可定制的问题和答案进行测验,我建议您使用文本文件来存储选项(问题和答案,以及可能的问题类型,如多项选择或输入有效值或选择一项)

对于文件的格式,可以使用xml或简单地使用java.util.Properties,使用其存储和加载保存到文件中

您的属性可以是“totalNumberQuestions”、“question1”“questionType1”“question1选项1”等

现在,在主程序中查找一个文件: *如果progrtam以args.length>0开头,请在单独的try catch中查找arg[0]的文件,因此即使没有,也会显示错误消息并继续

  • 如果在与程序相同的文件夹中未找到或没有名为“data.txt”的参数,则表示: 文件f=新文件(“data.txt”); 如果(f.exists()){//读取输入输出流

  • 从jar getClassLoader()中的类加载器获取else(在java.lang.class中查找实际函数名

通过这种方式,用户可以使用第二个jar创建data.txt,然后将其与询问问题的主jar打包,或者将其保存在同一文件夹中,或者在启动程序时将其作为参数传递

可以使用jar命令重新打包jar

jar ufMv quiz.jar  data.txt
要使用jar创建新的zip,请执行以下操作:

jar cvfM quiz.jar data.txt yourPackage.*.class 

你最好建立一个问答数据库。教师程序将写入数据库,孩子的程序将读取数据库。

你最好建立一个问答数据库。教师程序将写入数据库,孩子的程序将读取数据库。

制作一个输出文件从输入jar导入这个文件到另一个jar中使用。是的,听起来不错,但是你能将我重定向到一个源,告诉我如何将一个文件导入到ready.jar中吗?从输入jar生成一个输出文件,然后将这个文件导入到另一个jar中使用。是的,听起来不错,但是你能将我重定向到一个源,告诉我如何使用是否可以将文件导入ready.jar?请记住在使用Java.util.zip的情况下使用Java 7。以前的版本中存在一些令人讨厌的错误(带有编码)。请记住在使用Java.util.zip的情况下使用Java 7。以前的版本中存在一些令人讨厌的错误(带有编码)。