相关疑难解决方法(0)

将发布合并到一个JAR文件的最简单方法

是否有一个工具或脚本可以轻松地将一堆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)

java merge restructuredtext jar uberjar

70
推荐指数
8
解决办法
7万
查看次数

嵌套jar中的NoClassDefFoundError(Android)

我创建了一个简单的应用程序来测试失败的场景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的场景.

我应该做什么,所以我能够访问罐子里的罐子.

提前致谢.

java eclipse android jar noclassdeffounderror

6
推荐指数
1
解决办法
601
查看次数

从命令行将JAR依赖项与可执行JAR(ÜberJAR)捆绑在一起

我正在尝试从命令行创建一个可执行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 …

java jar classpath executable-jar

5
推荐指数
2
解决办法
4566
查看次数

maven-dependency-plugin在jar-with-dependencies.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,它包含重复的应用程序文件,如:

  1. 所有sql,属性文件,xml文件都存在两次.
  2. 所有java类.class文件都存在两次.
  3. 有很多与依赖项相关的overview.html和license.txt文件.

我不确定这是否正确,我还需要有人为我澄清这个生成的jar文件的重要性,因为我不熟悉这个插件.

请指教,谢谢.

java maven-2 packaging jar maven-dependency-plugin

5
推荐指数
1
解决办法
5901
查看次数

如何在android中的自定义库模块中包含第三方库

我正在使用android studio 1.5,我正在创建一般的sdk库,如paypal/facebook sdk,这个插件包括第三方库,如QRcode扫描仪,okhttp用于网络.一旦我在自定义库gradle文件中包含这些插件,它在同一个项目结构中工作正常,但是当我尝试将自定义sdk库包含到其他Android应用程序时,上面的第三方插件不包含在最终自定义库sdk中,那么我怎么能使用第三方库构建自定义android sdk库.

sdk android android-sdk-2.1 android-sdk-2.3 android-studio

5
推荐指数
0
解决办法
556
查看次数

为 javafx 应用程序创建捆绑 jar

我正在尝试使用 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 内部的目录而不是外部的目录?

谢谢!

ant deployment bundle javafx jar-with-dependencies

2
推荐指数
1
解决办法
2415
查看次数

JDBC连接的Java空指针异常

我正在尝试运行一个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 $ …

java sql connection jdbc

1
推荐指数
1
解决办法
1万
查看次数