2013-05-06 2 views
1

Я создал модуль Perl для обеспечения интерфейса с библиотекой Java RNG-обработки Jing. Код не найден here. Я использую [Inline::Java][3] для компиляции и загрузки небольшого класса, который использует jing.jar, оба находятся в каталоге java, который делится через [File::ShareDir][4]. Бег prove -vl или dzil test, модуль работает прекрасно, и тесты все проходят:Dzil Release Clobbers Jar File

>prove -vl 
t\0-use.t ............. 
1..1 
ok 1 - use XML::Jing; 
ok 
t\01-validates_xml.t .. 
1..3 
ok 1 - successfully reads a valid RNG 
ok 2 - returns nothing when XML file is valid 
ok 3 
ok 
t\02-exceptions.t ..... 
1..5 
ok 1 - warning for nonexistent RNG file 
ok 2 - constructor returns nothing for non-existent RNG file 
ok 3 - warning for bad RNG file 
ok 4 - constructor returns nothing for bad RNG file 
ok 5 - warning for nonexistent XML file 
ok 
All tests successful. 
Files=3, Tests=9, 6 wallclock secs (0.11 usr + 0.05 sys = 0.16 CPU) 
Result: PASS 

тесты также проходят при Дистрибутив построен с использованием dzil build:

dzil build 
cd XML-Jing-0.x 
perl Build.PL 
build 
build test 

Однако, используя dzil release, Инлайн :: Java кричит, когда пытается загрузить jing.jar. Мы получаем эти сумасшедшие ошибки ниже:

BEGIN failed--compilation aborted at t/01-validates_xml.t line 5. 
t/01-validates_xml.t .......... 
Dubious, test returned 1 (wstat 256, 0x100) 
No subtests run 

A problem was encountered while attempting to compile and install your InlineJava code. The command that failed was: 
    "C:\Program Files\Java\jdk1.7.0_21\bin\javac.exe" -deprecation -d "C:\strawberry\cpan\build\XML-Jing-0.01-Skydfp\_Inline\lib\auto\XML\Jing_706b" RNGValidator.java > cmd.out 2>&1 

The build directory was: 
C:\strawberry\cpan\build\XML-Jing-0.01-Skydfp\_Inline\build\XML\Jing_706b 

The error message was: 
error: error reading C:\strawberry\cpan\build\XML-Jing-0.01-Skydfp\blib\lib\auto\share\dist\XML-Jing\jing.jar; invalid END header (bad central directory offset) 

В настоящее время я загружаю флягу с помощью начать блок для редактирования CLASSPATH переменной:

BEGIN{ 
    use Env::Path; 
    my $classpath = Env::Path->CLASSPATH; 
    $classpath->Append(path(dist_dir('XML-Jing'),'jing.jar')); 
} 

Использование jarsigner, я проверил, что баночка поврежден в папке сборки созданный dzil release, но не в одной созданной dzil build:

в сборке, созданной с помощью dzil build:

jarsigner -verify java/jing.jar 
jar is unsigned. (signatures missing or not parsable) 

В сборке, созданной с помощью dzil release:

jarsigner -verify java/jing.jar 
jarsigner: java.util.zip.ZipException: invalid END header (bad central directory offset) 

Резюмируя, dzil release задавливает баночку в моем общем каталоге, в то время как dzil build нет. Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы этот модуль работал правильно?

+0

Поскольку я обновил это, может быть на самом деле больше об ошибке на Dist :: Zilla. В этом случае это может быть просто наградой @RJBS или кем-то еще за ее исправление. –

ответ

2

Сво ошибка. Тот, который часто случается и что произошло раньше, в джиле.
Dist-Zilla-4.300034\lib\Dist\Zilla\Dist\Builder.pm линия 388
заменить open my $fh, '<', $filename; с open my $fh, '<:raw', $filename;

+0

Проблемы с кодированием RJBS и DAGOLDEN в последнее время, поэтому теперь все должно быть хорошо. http://rjbs.manxome.org/rubric/entry/2021 –

1

На основании сообщения об ошибке «jing.jar; недопустимый заголовок END (плохое смещение центрального каталога)», что я могу разобрать, это может быть случай, когда jing.jar поврежден. Я бы посоветовал вам снова загрузить файл jing.jar, а затем попробовать поместить его в CLASS_PATH. Ниже одна ссылка, где вы можете скачать цзин

http://jing-trang.googlecode.com/files/jing-20091111.zip

Благодарности

+0

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

+0

Благодарим вас за внимание к тому, что выпущенная банка уже повреждена. Я понял, что проблема - это что-то с 'dzil release', а не с установками установки Perl или чем-то еще. –