是否有一个工具或脚本可以轻松地将一堆JAR文件合并到一个JAR文件中?奖励是轻松设置主文件清单并使其可执行.
具体案例是Java重组文本工具.我想用以下的方式运行它:
java -jar rst.jar
据我所知,它没有依赖关系,表明它不应该是一个简单的单文件工具,但下载的ZIP文件包含很多库.
0 11-30-07 10:01 jrst-0.8.1/
922 11-30-07 09:53 jrst-0.8.1/jrst.bat
898 11-30-07 09:53 jrst-0.8.1/jrst.sh
2675 11-30-07 09:42 jrst-0.8.1/readmeEN.txt
108821 11-30-07 09:59 jrst-0.8.1/jrst-0.8.1.jar
2675 11-30-07 09:42 jrst-0.8.1/readme.txt
0 11-30-07 10:01 jrst-0.8.1/lib/
81508 11-30-07 09:49 jrst-0.8.1/lib/batik-util-1.6-1.jar
2450757 11-30-07 09:49 jrst-0.8.1/lib/icu4j-2.6.1.jar
559366 11-30-07 09:49 jrst-0.8.1/lib/commons-collections-3.1.jar
83613 11-30-07 09:49 jrst-0.8.1/lib/commons-io-1.3.1.jar
207723 11-30-07 09:49 jrst-0.8.1/lib/commons-lang-2.1.jar
52915 11-30-07 09:49 jrst-0.8.1/lib/commons-logging-1.1.jar
260172 11-30-07 09:49 jrst-0.8.1/lib/commons-primitives-1.0.jar
313898 11-30-07 09:49 jrst-0.8.1/lib/dom4j-1.6.1.jar
1994150 11-30-07 09:49 jrst-0.8.1/lib/fop-0.93-jdk15.jar
55147 11-30-07 09:49 jrst-0.8.1/lib/activation-1.0.2.jar
355030 11-30-07 …Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的应用程序来测试失败的场景NoClassDefFoundError.
让我们举个例子,我有一些带有Class TestClass的Test1 android项目和一些方法.这个Test1项目我作为test1.jar导出,只导出了带有Class TestClass和的源文件夹classpath.project文件.
在另一个Android项目Test2中,我test1.jar在我的libs文件夹中添加了它.在这个Test2项目中,我有一个类Test2Class,它调用test1.jar类的方法.
在此之后,我test2.jar按照上述步骤将此Test2项目导出为文件.
因此,当我test2.jar在另一个项目中使用它时,我得到了上述错误NoClassDefFoundError.这是jar里面jar的场景.
我应该做什么,所以我能够访问罐子里的罐子.
提前致谢.
我正在尝试从命令行创建一个可执行jar.JAR中的主类具有我已打包到另一个普通JAR文件中的依赖项.
我想将依赖项JAR与可执行JAR打包在一起,以便发送一个JAR文件.
我到目前为止尝试的是以下内容:
依赖项Hello.class文件具有模拟代码:
public class Hello {
public String getHello() {
return "Well hello there!!";
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下方法将类文件打包到hello.jar中:
jar cvfM hello.jar Hello.class
Run Code Online (Sandbox Code Playgroud)
该hello.jar内容现在是:
hello.jar -+- Hello.class
Run Code Online (Sandbox Code Playgroud)
现在我有主要类与模拟代码:
public class Main {
public static void main(String[] args) {
System.out.println(new Hello().getHello());
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我创建一个清单文件manifest.txt,其中包含以下内容:
Main-Class: Main
Class-Path: hello.jar
Run Code Online (Sandbox Code Playgroud)
我现在使用以下方法创建可执行JAR:
jar cvfm main.jar manifest.txt Main.class hello.jar
Run Code Online (Sandbox Code Playgroud)
该main.jar文件内容是现在:
main.jar -+- Main.class
|
+- hello.jar
|
+- META-INF -+- MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)
使用以下命令运行可执行JAR:
java -jar main.jar
Run Code Online (Sandbox Code Playgroud)
我得到Hello类依赖项的类加载器错误.我知道这是因为类加载器在与main.jar …
我正在使用maven创建一个独立的Java应用程序,我使用maven-dependecy-plugin将依赖项包含在jar文件中,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>theMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-my-bundle</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这包括lib文件夹中生成的jar文件中的依赖项,并且jar运行并且工作正常,但问题出在另一个生成的jar文件中appname-1.0-jar-with-dependencies.jar.
问题:我不确定这是否是一个问题,但我注意到在生成的目标文件夹中appname-1.0-jar-with-dependencies.jar,它包含重复的应用程序文件,如:
我不确定这是否正确,我还需要有人为我澄清这个生成的jar文件的重要性,因为我不熟悉这个插件.
请指教,谢谢.
我正在使用android studio 1.5,我正在创建一般的sdk库,如paypal/facebook sdk,这个插件包括第三方库,如QRcode扫描仪,okhttp用于网络.一旦我在自定义库gradle文件中包含这些插件,它在同一个项目结构中工作正常,但是当我尝试将自定义sdk库包含到其他Android应用程序时,上面的第三方插件不包含在最终自定义库sdk中,那么我怎么能使用第三方库构建自定义android sdk库.
我正在尝试使用 ANT 为我的 JavaFX 应用程序将所有库捆绑到一个 jar 中。我发现以下使用 ant 创建捆绑 jar但无法使其工作。添加库 *.jar 文件可以<fx:jar>通过添加<fileset>:
<fileset dir="build" includes="libs/*.jar"></fileset>
Run Code Online (Sandbox Code Playgroud)
该build目录包含:
build
|-- classes (compiled classes)
|-- libs (external libraries)
|-- src (sources)
Run Code Online (Sandbox Code Playgroud)
生成的 jar 现在包含包含libs所有库的目录。
如何告诉生成的 jar 应该查看libsjar 内部的目录而不是外部的目录?
谢谢!
我正在尝试运行一个Web应用程序,该应用程序从用户获取特定长度的数字并针对数据库进行检查(因此,如果用户输入了错字,它将提供关于用户实际意味着什么密钥的建议).我遇到的问题是应用程序将无法连接到数据库,我收到此错误:
显示java.lang.NullPointerException
在Validator.Validate.checkIDs(Validate.java:410)
在Validator.Validate.getAllValidIds(Validate.java:203)
在Python.WebServlet.processRequest(WebServlet.java:70)
在Python.WebServlet.doPost (WebServlet.java:247) 位于org.apache.catalina.core的
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
的javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
. ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
atg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve)的.java:168)
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
在org.apac hegata.valves.AccessLogValve.invoke(AccessLogValve.java:927)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter. java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
atg.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util .net.AprEndpoint $ SocketProcessor.run(AprEndpoint.java:1805)
java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java) :908)
在java.lang.Thread.run(Thread.java:662)
Validator.Validate中的第410行是:
Statement stmt = Conn.createStatement();
Run Code Online (Sandbox Code Playgroud)
其中Conn是java.sql.Connection变量
第203行是对执行^语句的方法的调用
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546 )
在java.lang.Class.forName0(本机方法)
在java.lang.Class.forName(Class.java:169)
在Validator.Validate.dbConnect(Validate.java:394)
在Validator.Validate.getAllValidIds(验证.的java:193)
在Python.WebServlet.processRequest(WebServlet.java:70)
在Python.WebServlet.doPost(WebServlet.java:247)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
在使用javax. servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 210)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
在org.apache.catalina.core.StandardContextValve.invoke(STANDAR dContextValve.java:169)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
在org.apache.catalina
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)的.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118 )
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol $ …