Java 带Maven的SapJco 3.0.11:不允许重命名或重新打包原始归档文件;sapjco3.jar“;
sap jco连接器的当前版本在运行时强制包含jar的名称。如果与名称(sapjco3.jar)不匹配,将导致异常 JCo初始化失败,java.lang.ExceptionInInitializerError:非法JCo 存档“sap-jco-win-amd-64-3.0.11.jar”。不允许重命名或重新打包原始归档文件“sapjco3.jar” 我们包装了这些库,并在nexus存储库中使用自定义pom部署它们。标准maven构建是不可用的atm,这是此更改/命名工件的标准maven方式的结果 当前的解决方法使用此依赖项的系统范围,并将sapjco maven工件复制到项目中的指定文件夹,因为这是强制执行jar文件名并将其作为依赖项保留在构建中的唯一方法。这在同一模块中起作用。系统范围的缺点之一是可传递工件的停用/失败解析。我们需要它,因为sap连接器模块包含在应用程序war模块中。由于打包的工件中不包括系统范围依赖项,我们必须将它们复制到web inf/lib文件夹,并向清单中添加一个类路径条目 当我从父/根模块启动构建时,构建可以工作,但由于系统作用域依赖性,在子模块中启动构建时失败。我们现在可以接受这个解决方案,但我绝对不满意 是否有推荐的方法将sapjco与maven结合使用,或者有更简单的方法来生成依赖于平台的工件,包括本机库和具有指定名称的jar?SAP是否正在重新考虑此检查,因为以前的版本未包含此检查 编辑:Java 带Maven的SapJco 3.0.11:不允许重命名或重新打包原始归档文件;sapjco3.jar“;,java,maven,sap,Java,Maven,Sap,sap jco连接器的当前版本在运行时强制包含jar的名称。如果与名称(sapjco3.jar)不匹配,将导致异常 JCo初始化失败,java.lang.ExceptionInInitializerError:非法JCo 存档“sap-jco-win-amd-64-3.0.11.jar”。不允许重命名或重新打包原始归档文件“sapjco3.jar” 我们包装了这些库,并在nexus存储库中使用自定义pom部署它们。标准maven构建是不可用的atm,这是此更改/命名工件的标准maven方式的结果
- 其他开发者似乎也有同样的问题:
- 系统范围已弃用,不是长期解决方案
- 我也遇到了同样的问题,下面是我如何解决它的(简单地说就是解决它的方法):
1.在命令提示符下运行该命令
mvn install:install-file
-Dfile=sapjco3.jar
-DgroupId=com.company.sap
-DartifactId=com.sap.conn.jco.sapjco
-Dversion=1.0
-Dpackaging=jar
com.company.sap
com.sap.conn.jco.sapjco
1
if (!jarname.equals("sapjco3.jar")
&& !jarname.startsWith("com.sap.conn.jco")
&& !jarname.equals("sapjco3_IDE.jar")
&& Package.getPackage("org.apache.maven.surefire.booter") == null
&& Package.getPackage("org.eclipse.jdt.internal.junit.runner") == null) {
throw new ExceptionInInitializerError("Illegal JCo archive \"" + jarname + "\". It is not allowed to rename or repackage the original archive \"" + "sapjco3.jar" + "\".");
}
为什么这张支票要登记?你违反许可证了吗?我不打算违反许可证。结果工件应包含具有指定命名约定的文件。我希望从maven存储库获取所有依赖项,但sap没有提供连接器的mavenized版本。因此,我们创建了自己的maven工件,并将其上传到我们的私有存储库。我认为这个问题正在影响更多的开发者,但还没有找到解决方案。我们也有同样的问题。目前,我们只需要独立的应用程序(实际上是SAP和企业应用程序之间的中间件客户端)。所以我们使用的是maven汇编插件。这样,我们只需在结果工件(ZIP)中显式地重命名这个JAR。也许maven war插件中也有类似的配置选项?另外:3.0.11版也有这个问题。在此之前,我们使用了3.0.6,我们没有这个问题。我不知道这些建议会起作用:1)直接在WEB-INF/lib中使用正确名称的jar文件,而不是将其作为依赖项添加。2) 使用maven war插件的outputFilenameMapping特性在war中重命名jar。