Tag: jar

在google dataproc集群实例中的spark-submit上运行app jar文件

我正在运行一个.jar文件,其中包含我需要打包的所有依赖项。 其中一个依赖项是com.google.common.util.concurrent.RateLimiter并且已经检查过它的类文件位于此.jar文件中。 不幸的是,当我在google的dataproc-cluster实例的主节点上点击命令spark-submit时,我收到此错误: Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createStarted()Lcom/google/common/base/Stopwatch; at com.google.common.util.concurrent.RateLimiter$SleepingStopwatch$1.(RateLimiter.java:417) at com.google.common.util.concurrent.RateLimiter$SleepingStopwatch.createFromSystemTimer(RateLimiter.java:416) at com.google.common.util.concurrent.RateLimiter.create(RateLimiter.java:130) at LabeledAddressDatasetBuilder.publishLabeledAddressesFromBlockstem(LabeledAddressDatasetBuilder.java:60) at LabeledAddressDatasetBuilder.main(LabeledAddressDatasetBuilder.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 在覆盖我的依赖关系的意义上似乎发生了一些事情。 已经从这个.jar反编译了Stopwatch.class文件并检查了那个方法。 这恰好发生在我运行google dataproc实例时。 我在执行spark-submit的过程中做了grep ,我得到了像这样的标志-cp : /usr/lib/jvm/java-8-openjdk-amd64/bin/java -cp /usr/lib/spark/conf/:/usr/lib/spark/lib/spark-assembly-1.5.0-hadoop2.7.1.jar:/usr/lib/spark/lib/datanucleus-api-jdo-3.2.6.jar:/usr/lib/spark/lib/datanucleus-rdbms-3.2.9.jar:/usr/lib/spark/lib/datanucleus-core-3.2.10.jar:/etc/hadoop/conf/:/etc/hadoop/conf/:/usr/lib/hadoop/lib/native/:/usr/lib/hadoop/lib/*:/usr/lib/hadoop/*:/usr/lib/hadoop-hdfs/lib/*:/usr/lib/hadoop-hdfs/*:/usr/lib/hadoop-mapreduce/lib/*:/usr/lib/hadoop-mapreduce/*:/usr/lib/hadoop-yarn/lib/*:/usr/lib/hadoop-yarn/* 有什么办法可以解决这个问题吗? 谢谢。

jar文件夹中的资源列表?

通常我从jar文件中读取资源如下: getClassLoader().getResource(pTextPath + “/” + pLang +”.xml”); 我需要从jar文件中的已知文件夹中读取具有特定名称的所有资源。 例如,读取* .xml 插件/资源/文 我可以根据路径和名称模板以某种方式从jar文件列表中获取资源吗? 更新:完全重复从类路径目录获取资源列表请关闭问题。

如何使用netbeans创建可执行的.jar文件

我想制作“双击”cli应用程序,但仍然没有得到如何。 我知道我应该以某种方式编辑清单,但这就是全部。 我用Google搜索了。 但没有成功。 谢谢你的任何提示。 以下是构建,运行和清单的输出: compile: Created dir: /home/nick/NetBeansProjects/SemestralWork/dist Building jar: /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar Not copying the libraries. To run this application from the command line without Ant, try: java -jar “/home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar” jar: BUILD SUCCESSFUL (total time: 1 second) java -jar /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar Exception in thread “main” java.lang.NoClassDefFoundError: semestralwork/Main Caused by: java.lang.ClassNotFoundException: semestralwork.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native […]

使用hadoop运行jar时的NoSuchMethodError Sets.newConcurrentHashSet()

我正在使用带有hadoop 2.2.0的 cassandra-all 2.0.7 api。 4.0.0 zazzercode doctorhere-engine-writer 1.0 jar DoctorhereEngineWriter UTF-8 2.0.7 1.0-2 15.0 2.2.0 org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.6 1.6 maven-assembly-plugin zazzercode.DiseaseCountJob jar-with-dependencies junit junit 3.8.1 test me.prettyprint hector-core ${hector.version} org.apache.thrift libthrift org.apache.cassandra cassandra-all ${cassandra.version} libthrift org.apache.thrift org.apache.cassandra cassandra-thrift ${cassandra.version} libthrift org.apache.thrift org.apache.hadoop hadoop-client ${hadoop.version} org.apache.thrift libthrift 0.7.0 com.google.guava guava ${guava.version} com.googlecode.concurrentlinkedhashmap concurrentlinkedhashmap-lru 1.3 […]

如何使用Package类的getImplementationVersion()方法从JAR的清单中获取包版本

当我准备我的程序进行部署时,我将它与Eclipse jar-in-jar类加载器一起打包到JAR中。 当我的程序从JAR运行时,我需要知道一个包的版本,但我不能从jar的清单中以简单和“诚实”的方式获取它。 清单看起来像这样: Manifest-Version: 1.0 Created-By: 1.8.0_73-b02 (Oracle Corporation) Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader Rsrc-Main-Class: com.domain.sp2.controller.Controller Rsrc-Class-Path: ./ jar-in-jar-loader.zip javahelp-2.0.05.jar json-simple-1.1.1.jar Class-Path: . Name: com/domain/sp2/controller/ Implementation-Version: 19 为了获得软件包的实现版本,我尝试使用最简单直接的方法: package com.domain.sp2.controller; public class Controller { … public static String getBuildNumber() throws IOException { Package pckg = Controller.class.getPackage(); pr(pckg.getName()); // prints “com.domain.sp2.controller”, as expected return pckg.getImplementationVersion(); // returns null […]

Java代码安全

可能重复: 您是否混淆了商业Java代码? 有没有其他方法可以保护jar子不被其他人打开? 问题是我不希望任何人访问代码,这就是我不喜欢Java的原因。 从我使用的反编译器开始,用C#和Java编写的程序就像变量的名称一样完整,这样可以很容易地访问不是免费的程序。 更糟糕的是,给出源代码。

减少jar文件大小?

是否有一个很好的应用程序通过消除冗余类/方法/常量池元素来减少jar文件大小? (即无法从一组固定的入口点到达,假设没有reflection) 当我只是使用他们的几种方法时,我已经厌倦了拉臃肿的库。 (我不是在谈论小的“本地”优化,比如缩小名称。我正在考虑更多的东西进行全局分析,以确定使用哪些类/方法/变量,给定一组入口点(包括reflection条目)点),并删除未使用的所有内容。 我的webapp就像是45MB,主要是由于30多个库,而且我很确定我只使用了每个库的一小部分。

为什么我的jar文件不在netbeans之外运行?

当我点击运行时,我构建了一个可以在netbeans中完美运行的jar文件,但是当我尝试通过双击它来运行jar文件时它没有运行,没有任何反应..

JAR主类没找到问题

我必须创建一个JAR文件(不使用任何IDE) 这就是我正在做的事情: 我有一个名为Project的文件夹,这是主要文件夹,在这个文件夹中我有两个文件夹和一个pdf文件。 一个名为ClassFiles ,包含我项目的所有“.class”文件 另一个名为JavaFiles ,包含所有“.java”文件。 该文件是我必须包含的关系,虽然没有任何相关性,并且被称为Info.pdf。 我有的错误是这样的: 我的主要类(冗余,我的意思是起始的,使用“public static void main(String [] args)”)称为Main 我正在使用的命令行是: jar -cfe Project.jar ClassFiles.Main JavaFiles ClassFiles INFO.pdf 我得到错误Could not find the main class: ClassFiles.Main. Program will exit Could not find the main class: ClassFiles.Main. Program will exit PS:在ClassFiles文件夹中我有很多classname $ 1,classname $ 2文件。 我不知道它是否相关。 我甚至有Main和另一个Main $ 1 。 我明天需要给这个JAR,所以我非常绝望。 先感谢您! […]

从JAR文件加载属性(java 1.6)

我手动在jar中注入一个属性文件。 如何在java 1.7之前从jar文件加载属性? 我尝试了很多变通办法,到目前为止还没有任何工作。 关于它的问题很多,但是所有内容都集中在java 1.7的ClassLoader方法上。