2015-07-22 2 views
1

Я искал и искал, так что поверьте мне, когда я говорю, что я действительно в тупике. Примечание. Я вынужден использовать Java 6.Добавление новых файлов в zip-архив с помощью Truezip

Мне нужно вставить XML-файл в zip-архив программно с помощью Java, но без извлечения архива и его повторного сжимания. Я был обращен к Truezip как к решению моей проблемы, но я не могу заставить Truezip признать, что мой архив archive.zip - это архив. Я получаю сообщение «archive.zip/file.txt не является каталогом» при попытке получить доступ к архиву на месте с помощью:

new TFile("example.zip/audit.xml") 

Я ссылается на блог Truezip, а также несколько вопросов по StackOverflow, но я не могу найти образец кода, который иллюстрирует то, что я пытаюсь сделать. Может ли кто-либо предоставить/указать фрагмент, который выполняет простую задачу?

Полный Stack след:

java.io.FileNotFoundException: /Users/ss042306/java-scan-example/target/fortify/example.zip/audit.xml 
at de.schlichtherle.truezip.file.TFileOutputStream.newOutputStream(TFileOutputStream.java:147) 
at de.schlichtherle.truezip.file.TFileOutputStream.<init>(TFileOutputStream.java:116) 
at com.fortify.ps.maven.plugin.sca.ScanMojo.copyPreviousComments(ScanMojo.java:745) 
at com.fortify.ps.maven.plugin.sca.ScanMojo.execute(ScanMojo.java:332) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: java.nio.file.NoSuchFileException: /Users/ss042306/java-scan-example/target/fortify/example.zip/audit.xml 
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) 
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) 
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) 
    at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) 
    at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434) 
    at java.nio.file.Files.newOutputStream(Files.java:216) 
    at de.schlichtherle.truezip.fs.nio.file.FileOutputSocket$1OutputStream.<init>(FileOutputSocket.java:243) 
    at de.schlichtherle.truezip.fs.nio.file.FileOutputSocket.newOutputStream(FileOutputSocket.java:257) 
    at de.schlichtherle.truezip.file.TFileOutputStream.newOutputStream(TFileOutputStream.java:143) 
    ... 24 more 

Я ссылается на следующие ресурсы:

[1] http://illegalexception.schlichtherle.de/2011/07/26/appending-to-zip-files/

[2] append a file to zip using TrueZip

[3] https://truezip.java.net/kick-start/tutorial.html

EDIT: Truezip не функционировал так, как описано, потому что у меня не было всех зависимостей, необходимых для его обработки .zip-файлов в качестве виртуальных каталогов. После того, как я включил этот фрагмент ниже в мой pom.xml, я мог взаимодействовать с ZIP-файлами в качестве виртуальных каталогов.

` <dependency> 
     <groupId>de.schlichtherle.truezip</groupId> 
     <artifactId>truezip-driver-zip</artifactId> 
     <version>7.7.9</version> 
    </dependency>` 

Без этой зависимости, не было TArchiveDetector доступно для идентификации «.zip» в качестве архива.

+1

'Я получаю исключения, начинаю с этого. прочитайте их. google те. если вы все еще не можете сделать из них, добавьте их на вопрос – njzk2

+0

Извинения, предназначенные для включения большего, просто нужно было получить что-то напечатанное. Мне говорят, что «archive.zip \ file.txt» не является каталогом, что не очень полезно для выяснения того, что происходит. – ShoeStringCollective

+0

Пожалуйста, добавьте полную трассировку стека исключений, которую вы получаете из приведенного вами кода. –

ответ

0

Возможно, ваш путь к классу просто отсутствует в ZIP-архиве TrueZIP?

Обычно я рекомендую сгенерировать образец проекта из файла Archetype TrueZIP *, а затем настроить/интегрировать его в соответствии с вашими потребностями. Следуйте инструкциям на странице Getting Started - это проведет вас через процесс.

+0

Привет, христианин, я ценю работу, введенную в ваш API. Сначала я следил за страницей «Начало работы». Я улучшаю ранее существовавший плагин, поэтому начинать с нуля с архетипа для меня не было. Я действительно решил свою проблему, которая была отсутствующей зависимостью в моем pom.xml. Смотрите ниже: ' de.schlichtherle.truezip truezip-водитель-зип 7,7.9 ' – ShoeStringCollective

+0

Я столкнулся с проблемой с пользовательским TArchiveDetector. Если я импортирую JarDriver (de.schlichtherle.truezip.fs.archive.zip.JarDriver), необходимый для создания настраиваемого TArchiveDetector, во время компиляции я получаю исключение нулевого указателя. Я думаю, что это должна быть аналогичная проблема, чтобы снова не иметь правильной зависимости, но я еще не поставил проблему. В очередной раз благодарим за помощь. – ShoeStringCollective

+0

сайт закрыт https://truezip.java.net/kick-start/index.html –

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