Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一个jar文件复制到Scala中的另一个jar文件中_Scala_Jar - Fatal编程技术网

将一个jar文件复制到Scala中的另一个jar文件中

将一个jar文件复制到Scala中的另一个jar文件中,scala,jar,Scala,Jar,我必须更改.jar文件中.config文件的内容,我已从.jar文件夹复制了config文件的内容,并在.jar文件位置之外创建了一个.config文件。现在我创建了一个方法,该方法使用我的.jar文件,.config文件名和一个新创建的.config文件的输入流。该方法使用从原始jar复制的内容创建一个临时的.jar文件,最后将temp.jar文件重命名为原始文件并删除原始文件。它工作正常,但创建的.jar文件已损坏,无法打开。可能是什么问题,这是我的代码 def createNewJar(j

我必须更改.jar文件中.config文件的内容,我已从.jar文件夹复制了config文件的内容,并在.jar文件位置之外创建了一个.config文件。现在我创建了一个方法,该方法使用我的
.jar文件
.config文件名
和一个新创建的.config文件的
输入流
。该方法使用从原始jar复制的内容创建一个临时的.jar文件,最后将temp.jar文件重命名为原始文件并删除原始文件。它工作正常,但创建的.jar文件已损坏,无法打开。可能是什么问题,这是我的代码

def createNewJar(jarToEdit:String, entryToEdit: String, isp:InputStream) = {

     val tempJar = File.createTempFile(jarToEdit, null, new File("/home/administrator/Sources/Scala/rationaltab-launchpad"))

     val jar = new JarFile(jarToEdit)
     val entries = jar.entries()
     val buffer = new Array[Byte](1024)
     val newJar = new JarOutputStream(new FileOutputStream(tempJar))
     var delFlag = false
     var bytesRead = 0

     while(entries.hasMoreElements) {

            try {

                val entry = entries.nextElement()
                val is = jar.getInputStream(entry)
                var newEntry = entry

                if (newEntry.getName.equals(entryToEdit)) {
                   newEntry = new JarEntry(entryToEdit)
                 }

               newJar.putNextEntry(newEntry)

               if (!newEntry.getName.equals(entryToEdit)) {
                 while ( {bytesRead = is.read(buffer); bytesRead != -1 }) {
                    newJar.write(buffer, 0, bytesRead)
                  }
               }

               if (newEntry.getName.equals(entryToEdit)) {

                 while ( { bytesRead = isp.read(buffer); bytesRead != -1 }) {
                   newJar.write(buffer, 0, bytesRead)
                 }
               }
             newJar.closeEntry()

      } catch { case e :Exception => e.printStackTrace() }

     }

    delFlag = true
    if (delFlag) {
       val origFile = new File(jarToEdit)
       origFile.delete()
       tempJar.renameTo(origFile)
    }
  }

如果使用Java7+作为基础,请使用zip文件系统provider@fge我用的是Scala,然后呢?Scala将JRE用作base@fge我知道,但是上面我的代码中可能出了什么问题只是一个猜测,但是可能需要在流上调用
close()