2017-02-08 7 views
1

나는 내 자바 프로젝트, 닷넷의 x64 EXE + 매니페스트 + 닷넷 DLL 의존성의 다른 것들 사이에 포함 된 zip 파일을 만들려고 해요. Maven 어셈블리 플러그인이 EXE와 DLL을 손상시키는 것 같습니다. 사실 추출한 파일을 실행하려고하면 "이 응용 프로그램은이 PC에서 실행할 수 없습니다"(잘못된 x64 Windows 응용 프로그램) 파일을 가져 오지만 원본 파일을 복사하면 정상적으로 작동합니다.메이븐 조립 플러그인 부패 EXE DLL

나는 성공없이 솔루션을 구글을 시도했습니다. 내가 Maven 파일에서 뭔가를 놓친 건가요? pom.xml에서

플러그인 선언은 다음과 같습니다

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptors> 
      <descriptor>src/main/assembly/windows.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
     <execution> 
      <id>assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <appendAssemblyId>false</appendAssemblyId> 
       <finalName>${bundle.name}</finalName> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

windows.xml 동안 내용은 다음과 같습니다

<?xml version="1.0"?> 
<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>windows</id> 

    <formats> 
    <format>zip</format> 
    </formats> 

    <files> 
    <file> 
     <source>${launcher.dir}/GetMachineId.exe</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>GetMachineId.exe</destName> 
    </file> 
    <file> 
     <source>${launcher.dir}/GetMachineId.exe.config</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>GetMachineId.exe.config</destName> 
    </file> 
    <file> 
     <source>${launcher.dir}/MessagingToolkit.QRCode.dll</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>MessagingToolkit.QRCode.dll</destName> 
    </file> 
    </files> 
</assembly> 
+0

전체 예외를 공유 할 수 있습니까? 이벤트 뷰어, Windows 로그> 응용 프로그램에서 – user3272686

+0

:'프로그램 또는 기능 "\ ?? 64 비트 버전의 Windows와 호환성에 64 물어 소프트웨어 공급 업체에 문의하십시오 인해 GetMachineId.exe \

시작하거나 실행할 수 없습니다 \. (원본 : Wow64 에뮬레이션 레이어). 원래 파일로 GetMachineId.exe를 대체하고 다시 시도하면 Microsoft .NET Framework 오류 대화 상자가 표시됩니다. '... BadImageFormatException : 파일을로드 할 수 없거나 파일을로드 할 수 없습니다. 어셈블리 'MessagingToolkit.QRCode ...' – conteit86

답변

0

문제 발견.

사실 필터링 ${launcher.dir}에도 maven-resources-plugin 사용되었다. 필터링에서

제외 바이너리 파일은 문제를 해결했다.