我的java程序打包在一个jar文件中,并使用外部jar库,bouncy castle.我的代码编译得很好,但是运行jar会导致以下错误:
线程"main"中的异常java.lang.SecurityException:Manifest主要属性的签名文件摘要无效
我用谷歌搜索了一个多小时寻找解释,发现很少有价值.如果有人以前看过这个错误并且可以提供一些帮助,我将不得不承担责任.
我将Java库打包为JAR,java.lang.IncompatibleClassChangeError当我尝试从中调用方法时,它会抛出很多s.这些错误似乎是随机出现的.什么类型的问题可能导致此错误?
我是Clojure的新手,我开始尝试构建应用程序.
到目前为止,我所看到的有关编译Clojure程序的教程的所有内容都涉及交互性.例如,"加载REPL并键入(加载文件"this-or-that")以运行.这很好,但这还不够.
我已经习惯了C语言或Delphi等语言的编辑 - 编译 - 运行习惯,我本能地驱动编辑,然后点击"Mx编译".
问题是"lein uberjar",我理解相当于"make",即使对于一个你好的世界也很难执行.因此,我将不得不弄清楚这种"交互式开发"的东西是如何工作的,停止使用像它快速制作的超级发布,并且只在一天结束时保存它.
我在构建时注意到的另一件事(使用lein uberjar)是我正在处理的小GUI应用程序在编译过程中弹出帧,就像它们在编译时执行一样.这对我来说似乎有点违反直觉; 它并不像我想象的那样类似于"制造".
我知道Lisp的开发方式是在REPL中交互式工作,我并不想改变它:我想适应这种生活方式.不幸的是,我没有看到关于如何这样做的文档形式.例如,如何重置机器的当前状态.只是继续编译各个片段而不能进行某种重置似乎有点麻烦.
我在Clojure(和Lisp)上看到的大多数教程似乎都专注于在REPL中进行黑客攻击.应用程序部署的最佳实践对我来说仍然是一个谜.我的用户只是用户; 他们不会成为将文件加载到REPL的开发人员.
所以这是我的问题:任何有关构建Clojure应用程序的整个过程(包括部署)的良好信息或教程的资源?
(注意:我已经安装并运行了所有先决条件(例如Emacs,Slime,Leiningen等),所以这不是一个问题).
我有一个Maven项目,我想从中创建两个可执行的jar文件.一个将由用户以交互方式使用,另一个将作为预定作业运行,该作业读取前者生成的日志文件.最后,我希望除了MANIFEST.MF文件中的Main-Class属性之外,两个jar文件是相同的.
我正在使用maven-antrun-plugin创建一个可执行jar,这似乎工作正常,直到我尝试通过引入Maven配置文件创建第二个jar文件.我的POM文件的相关部分如下所示:
<profiles>
<profile>
<id>publisher</id>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<mainClass>fully.qualified.path.Publisher</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>logReader</id>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${project.artifactId}-logReader</finalName>
<archive>
<manifest>
<mainClass>fully.qualified.path.LogReader</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
实际上,两者之间的唯一区别是插件中定义的"finalName"和"mainClass"元素.
当我尝试在两个配置文件上执行mvn:package时(顺便说一句,我使用IntelliJ IDEA),我得到两个.jar文件,但是一个是正确的,另一个是不正确的."正确"的包含所有依赖项和有效的MANIFEST.MF文件."不正确"的一个不包含依赖项,MANIFEST.MF文件缺少我需要的"Main-Class"属性,以使其可执行.
我发现,如果我只运行一个配置文件或另一个配置文件,它工作正常但是,如果我尝试一次执行两个配置文件,它会失败.我的日志中也有以下注释,但我必须承认我并不完全理解他们的意思:
[INFO] Building jar: .../target/publisher.jar
...
[INFO] …Run Code Online (Sandbox Code Playgroud) 我们为其他内部应用程序提供了一个客户端jar,以连接到我们的应用程序的REST API.我们的API依赖于一些标准的Jakarta库.将这些JAR文件包含在我们的客户端jar文件中是最佳做法吗?或者您只记录依赖项,并由客户确保他们的类路径上有这些jar?
你能帮忙解释什么是阴影罐,有什么maven-shade-plugin用?什么是超级罐子.
我已经将Web应用程序部署到Google应用程序引擎,而我的Web服务使用了jersey 1.14框架.当我尝试在GAE上使用或调用Web服务时,我得到了一个java.lang.IncompatibleClassChangeError:实现类.我四处搜索并意识到,球衣1.14取决于asm 3.1和谷歌应用程序引擎使用asm 4.0并意识到我必须使用JarJar打包依赖关系来解决这个问题,但我不知道如何做到这一点与JarJar.我发现的教程非常神秘,面向体验程序员.所以有人可以发布一个面向初学者的教程,或者指导我完成解决这个问题的步骤.
我在Scala中编写了一个使用Spark的应用程序.我正在使用Maven打包应用程序,并在构建"超级"或"胖"jar时遇到问题.
我面临的问题是运行应用程序在IDE内运行正常,或者如果我提供非超级jar版本的依赖项作为java类路径,但如果我将uber jar作为uber jar,它就不起作用类路径,即
java -Xmx2G -cp target/spark-example-0.1-SNAPSHOT-jar-with-dependencies.jar debug.spark_example.Example data.txt
Run Code Online (Sandbox Code Playgroud)
不起作用.我收到以下错误消息:
ERROR SparkContext: Error initializing SparkContext.
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:206)
at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:168)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:504)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:118)
at org.apache.spark.util.AkkaUtils$.org$apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:122)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:54)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1991)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1982)
at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:56)
at org.apache.spark.rpc.akka.AkkaRpcEnvFactory.create(AkkaRpcEnv.scala:245)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:52)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:247)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:188)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:267)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:424)
at debug.spark_example.Example$.main(Example.scala:9)
at debug.spark_example.Example.main(Example.scala)
Run Code Online (Sandbox Code Playgroud)
我非常感谢帮助理解我需要添加到pom.xml文件中的内容以及为什么我需要添加它以使其工作.
我在线搜索并找到了以下资源,我尝试过(参见pom),但无法开始工作: …
我正在写Spring应用程序,我有两个外部罐子.它在IDE中工作,但是当我用maven构建可执行jar时,它失败了,错误java.lang.NoClassDefFoundError:到我的外部jar.我用Google搜索,但我仍然不知道该怎么做.请帮我.我对pom文件的依赖是:
<dependency>
<groupId>com.myapp.myappawsprovider</groupId>
<artifactId>MyAppProvider</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>/Users/Projects/Java/MyApp/MyAppProvider/target/MyAppProvider Provider-1.0.0.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我用男士包装来构建它.
我在将maven部署包上传到Amazon s3时遇到了问题.
从Eclipse,我能够成功生成.jar文件,但是我在上传到服务器时遇到了问题.
这是我的Java代码:
package main.java.mavantestproj;
import java.util.Map;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.lambda.runtime.Context;
public class LambdaFunctionHandler {
public String handleRequest(Map<String,Object> input, Context context) {
context.getLogger().log("Input: " + input);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(new ProfileCredentialsProvider("mytest"));
client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.US_WEST_2));
client.describeTable("ProductCatalog");
// TODO: implement your handler
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
在目标文件夹中,我有2个罐子.即lambda-java-example-1.0-SNAPSHOT.jar&original-lambda-java-example-1.0-SNAPSHOT.jar
在这第一个jar是35MB,第二个jar是4KB.我没有得到哪一个上传到S3来运行我的lambda函数.
我有一个多模块项目。每个模块都打包在自己的/ target文件夹中的jar / war文件中。
我想获取每个模块的jar / war文件和一些配置文件,然后将所有内容放入一个zip文件中。
怎么做?我尝试使用Assembly插件,但到目前为止,我所能做的就是将每个模块的zip压缩到各自的/ target文件夹中,因此非常没用^^
java ×9
maven ×6
jar ×4
akka ×1
amazon-s3 ×1
apache-spark ×1
aws-lambda ×1
clojure ×1
deployment ×1
jersey ×1
leiningen ×1
lisp ×1
scala ×1
spring ×1
uberjar ×1