AnsweredAssumed Answered

SOEPackager buggy in 10.4.1 Windows

Question asked by RandallAvis on Sep 6, 2016

*** See the note at the end. I'm leaving this section for context. *****************

We are attempting to migrate our Java application from ArcGIS 10.0 to 10.4.1. The older version has been working for years; under 10.0 we just placed the jar file and the dependencies in the appropriate directory in the ArcGIS domain.  When creating the new package, I stored all of the dependent jars in one directory and referenced them by the -l argument to the soepackager batch file. 

I put some echo statements in the soepackager.bat file and here is the command that is being executed

java -jar arcgis-soepackager.jar "e:\workspace\\soe.jar" "e:..\dist" "<jdk directory>" "Name=aca_soe ... libjars=e:\...\libs\jar1.jar e:\...\libs\jar2.jar "


There are around 20 jar files listed as part of the libjars argument, space delimited. All of the path information is correct in the actual call.


The packager shows that is loading all of the classes, says that it is ignoring MANIFEST.MF, says nothing about the jar files, then complains that it can't find one of the Spring classes, even though the containing jar was included in the command line list.


Also, if I put the soe jar in the same directory as the others and use the -p to point to all of them, I get a 'duplicate class error' on the soe jar file.

Randall Avis


******************* Update *********************************

For the 10.4.1 Windows release (the only one I can speak to) the SOEPackager utility is buggy. The .bat file calls a jar file which creates the .soe, which is just a ZIP in a special format and extension. The first problem is that the jar file requires that the arguments be in a certain order, and the .bat file takes the -p and -l entries and puts them in the wrong order. No matter how much you work with it it will never work because the batch file has it wrong. Once I realized that (by invoking the jar directly to see what it wanted), I found out that it wanted Java 6! Seriously!


Fortunately for me in the hundreds of configuration options I tried I found out what I suspected was the proper format for the SOE. I will post the structure later; I work on a network that is not connected to the internet so it involves a lot of extra work to get the information out.