相关疑难解决方法(0)

Maven - 如何在jar中添加任意类路径条目?

我有一个不寻常的情况,我需要在可执行jar的清单中添加一个任意的类路径条目(指向一个jar文件).(这适用于Swing桌面应用程序.)

maven-jar-plugin使用maven依赖项为jar清单生成"Class-Path"条目,并且似乎没有任何添加任意条目的方法.

我还看了使用"-classpath"参数将任意类路径条目硬编码到启动应用程序的批处理文件中,但我无法弄清楚如何让Maven将类路径过滤到批处理文件中.

maven-2 jar build classpath

62
推荐指数
3
解决办法
8万
查看次数

Spring Boot的外部库文件夹

我想知道如何为我的Spring Boot应用程序外部化所有jdbc驱动程序,我不想在构建应用程序后将jdbc驱动程序插入到我的胖jar中.

有没有办法设置java vm参数,通知jar执行包含哪个外部文件夹?或者可能存在某种弹簧属性.

例如:

java  -DLib=file:\\\c:\Drivers -jar sample.jar
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot

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

可执行JAR忽略其自己的Class-Path属性

我使用了Maven中的指令- 如何在jar中添加任意类路径条目以Class-Path属性添加任意条目.这是我的MANIFEST.MF档案:

Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test
Run Code Online (Sandbox Code Playgroud)

我定义了org.jace.examples.Test,如下所示:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("classpath: " + System.getProperty("java.class.path"));
        System.out.println("PeerExample: " + Class.forName("org.jace.util.ShutdownHook"));
    }
}
Run Code Online (Sandbox Code Playgroud)

在哪里org.jace.util.ShutdownHook定义jace-runtime.jar.当我调用时,java -jar peer_example1.jar我得到以下输出:

classpath: peer_example1.jar 线程"main"中的异常java.lang.ClassNotFoundException:org.jace.util.ShutdownHook

换句话说,Java正在将可执行JAR文件添加到类路径中但忽略不计Class-Path.如果我调用java -cp jace-runtime.jar;peer_example1.jar org.jace.examples.Test我得到预期的输出:

classpath: jace-runtime.jar;peer_example1.jar

有任何想法吗?

java jar classpath

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

带有Classpath的Spring Boot可执行jar

我正在构建一个软件系统,使用Spring Boot与企业软件系统进行交互.我的系统依赖于该企业系统中的一些jar和*.ini文件,因此我无法在Maven中打包所有依赖项.我希望能够将Spring Boot作为带有嵌入式Tomcat的可执行jar运行.我还希望能够通过命令行设置类路径.所以类似于:

java -classpath /home/sleeper/thirdparty/lib -jar MyApp.jar
Run Code Online (Sandbox Code Playgroud)

但是,-classpath和-jar不能共存.我试过"-Dloader.path".它能够加载文件夹下的所有jar文件,但不能加载其他内容,例如文件夹中的*.ini文件.

那么有没有办法让-classpath与带有嵌入式Tomcat的Spring可执行jar一起工作?

提前感谢您的帮助.

java spring spring-boot

7
推荐指数
4
解决办法
3万
查看次数

是否可以使用jar清单来使用文件夹中的所有jar

我正在尝试设置jar清单,以便将所有库(jar)加载到jar旁边的文件夹中.

清单看起来像这样:

Manifest-Version: 1.0
Class-Path: libs/
Main-Class: path.to.my.class.Main
Run Code Online (Sandbox Code Playgroud)

布局如下:

- MyJar.jar
- libs/
-----lib1.jar
-----lib2.jar
Run Code Online (Sandbox Code Playgroud)

而我正试图这样运行:

java -jar MyJar.jar
Run Code Online (Sandbox Code Playgroud)

并且我在文件夹中的jar中获取有关类的NoClassDefinition错误.

如果有人好奇,该文件夹可能包含在类加载期间处理的可选jar.那个'swhy我不能使用硬编码或自动生成的.

任何的想法?

更新重新 提出问题,因为目前无法从清单本身进行此操作.答案是唯一真正可行的,不需要提取罐子,虽然它也有效.

因此,总结答案是否定的,如果您有未指定的依赖项,则无法单独使用清单文件.

java dependencies jar manifest

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

Spring Boot和外部配置

我正在尝试制作一个Spring Boot应用程序.一旦我使用其中包含的所有内容部署到胖jar文件,一切都很好.但是,我真正想要的是配置文件位于外部.例如,我有以下目录结构:

bin - contains startup and shutdown scripts
conf - all configurations. i.e. application.properties, logback.xml i18n.properties
logs - log files
libs - app.jar
Run Code Online (Sandbox Code Playgroud)

如果我使用这个目录结构并使用执行jar

java -cp ./conf -jar ../libs/app.jar
Run Code Online (Sandbox Code Playgroud)

然后不加载或识别conf目录中的属性.有没有更好的方法来维护上面的目录结构?或者,什么是替代/最佳实践?

deployment spring spring-boot

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

无法运行从 Scala 文件创建的 jar 文件

这是我用 Scala 编写的代码。

object Main extends App {
    println("Hello World from Scala!")
}
Run Code Online (Sandbox Code Playgroud)

这是我的build.sbt

name := "hello-world"
version := "1.0"
scalaVersion := "2.11.5"
mainClass := Some("Main")
Run Code Online (Sandbox Code Playgroud)

这是我运行以创建 jar 文件的命令。

sbt package
Run Code Online (Sandbox Code Playgroud)

我的问题是在target/scala-2.11创建了一个名为hello-world_2.11-1.0.jar的 jar 文件。但我无法运行该文件。它给了我一个错误,说NoClassDefFoundError

我究竟做错了什么?

scala jar build sbt

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