标签: jar

运行 Scala Jar

当我使用 Eclipse 将我的 scala 代码打包到一个 jar 中时,我无法运行所述 jar 文件。我有:

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

和:

    public class Runner {
       public static void main(String[] args) {
          Hello.main(args);
       }
   }
Run Code Online (Sandbox Code Playgroud)

我使用 eclipse 将其打包到一个名为 Hello.jar 的可运行 jar 中。java -jar Hello.jar 然后给出:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/App
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at Hello.main(Hello.scala)
at Runner.main(Runner.java:4)
Caused by: java.lang.ClassNotFoundException: scala.App
at java.net.URLClassLoader$1.run(URLClassLoader.java:217) …
Run Code Online (Sandbox Code Playgroud)

eclipse scala jar noclassdeffounderror

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

Maven:在运行时使用 test-jar 时缺少依赖项

我的 Maven 项目foo.web的源文件src/mainsrc/test. 当然,测试类使用“主”类。现在我想在运行时在另一个项目中使用测试类,所以我按照这些关于如何创建测试 jar 的说明进行操作。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <goals> 
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这非常有效,web-SNAPSHOT-tests.jar创建了一个 jar ,我可以将它包含在我的其他项目中。

<dependency>
        <groupId>foo</groupId>
        <artifactId>web</artifactId>
        <version>SNAPSHOT</version>
        <type>test-jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但似乎对 的依赖web-SNAPSHOT没有正确设置,因为在运行时我收到foo.web. 所以我添加了另一个依赖项:

<dependency>
        <groupId>foo</groupId>
        <artifactId>web</artifactId>
        <version>SNAPSHOT</version>
        <type>war</type>
        <scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有任何改变。有谁知道这里有什么问题?

java jar war maven

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

将 jar 添加到 Tomcat 服务安装的 lib 文件夹后出现 ClassNotFoundException

我正在尝试更新 Web 应用程序以使用 DBCP。事情在本地运行良好(Windows 安装上的典型 Tomcat)。但是,在 DEV 服务器(EC2 LINUX AMI;Tomcat 即服务)上,我得到以下信息

Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
Run Code Online (Sandbox Code Playgroud)

我已将范围缩小(我认为)到/lib最初没有tomcat-jdbc.ja.

我已经添加了这个 jar,并使用以下命令重新启动了 Tomcat 实例......

sudo service tomcat7 restart
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到相同的 ClassNotFoundException。如何让 Tomcat 服务识别tomcat-dbcp.jar

编辑 - 这是运行后的堆栈跟踪 sudo service tomcat7 start

Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], canRead: [false]
Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], …
Run Code Online (Sandbox Code Playgroud)

java jar class tomcat7

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

groovy 二进制版本 vs groovy-all-jar

当我想从http://groovy-lang.org/download.html下载 groovy 时,我得到了“二进制版本”。这意味着我有一个带有libbinembeddable文件夹的目录结构。在bin文件夹中有一个groovyshell 脚本,让我可以执行我自己的 groovy 源文件。此groovyshell 脚本使用lib目录中的 jars 。但是,我希望它使用embeddable目录中groovy-all-jar 中的 jars 。原因是,我不希望jar在我的类路径中的目录中的所有 jars,因为我需要使用不同的版本。

如何groovy使用 groovy-all-jar制作shell 脚本?

shell groovy jar classpath

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

Gradle 构建不包括源代码/src groovy

我正在尝试从基本程序创建一个 jar。

  • 我有一个基本的 groovy 项目,即 src/org...../*.groovy 在根目录中
  • 我有以下 build.gradle

    apply plugin: 'groovy'
    version = '1.0'
    
    repositories {
        mavenCentral();
    }
    
    dependencies
    {
        compile files (fileTree(dir: 'lib', include: ['*.jar']),
            fileTree(dir: 'lib/DocxDep', include: ['*.jar']))
    }
    
    task buildLabServicesJar(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from {
        configurations.compile.collect {
            it.isDirectory() ? it : zipTree(it)
        }
        configurations.runtime.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    
    manifest {
        attributes 'Implementation-Title': 'Lab Services',
            'Implementation-Version': version,
            'Main-Class': 'org.xxx.clarity.ClarityServices'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

问题是当我运行和/或检查 jar 文件时,我的 src/** sclasses 不包括在内!(所有依赖都是完美的)

这里有什么问题?

更新

当我添加: from files(fileTree(dir: …

groovy jar gradle

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

java.security.NoSuchAlgorithmException:在 jar 文件中找不到任何支持 RSA/NONE/PKCS1Padding 的提供程序

我做解密和加密RSA,我用Cipher.getInstance("RSA/NONE/PKCS1Padding");它,我补充说Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());compile 'org.bouncycastle:bcprov-jdk16:1.45'到 gradle-file。所以这个项目在 Intellij Idea 中运行和工作,

但是如果我生成 .jar 文件并运行它,我有:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/PKCS1Padding
    at javax.crypto.Cipher.getInstance(Cipher.java:540) 
Run Code Online (Sandbox Code Playgroud)

(由 gradle 的 ShadowJar 任务生成的 .jar)。

为什么我在 Intellij Idea 中的项目 - 工作!在 .jar 文件中 - 不起作用?

java jar jce intellij-idea gradle

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

在Eclipse中,在依赖maven项目的动态web项目中,如何从maven项目中提取jar包?

在 Eclipse 中,我有两个项目:

archangel.core - 一个 Maven 项目

ArchangelWEB - 一个动态 Web 项目(为 Tomcat 构建)。

首先, archangel.core 拥有所有基本代码并使用 Maven 来解决依赖关系。第二个是在核心项目之上的 Web 添加。这只有特定于演示/视图的代码。我想把它们分开,因为我将来可能有其他项目会依赖核心,我不希望核心项目有 Web 库依赖。

现在,在 ArchangelWEB 的构建路径中,我有 archangel.core 项目,并且在其部署程序集中也有 archangel.core。这使我可以在 ArchangelWEB 中引用来自 archangel.core 的代码,而不会出现任何构建或运行时问题。

archangel.core 的依赖项之一是 apache-commons-lang。在 archangel.core 中,我可以引用像ExceptionUtils. 但是,我无法从 ArchangelWEB 自动引用这个 jar 依赖项。如果我尝试import从 ArchangelWEB 中的 apache-commons-lang 上课,它不知道我在说什么。

将 Maven 项目中的依赖项 jars 导入/引用到另一个项目(我的动态 Web 项目)中的最佳方法是什么,该项目使用 Maven 项目作为依赖项?

java eclipse dependencies jar maven

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

如何从META-INF目录加载属性文件?

properties运行JAR最佳的人在执行中使用的文件属于其中是否正确META-INF?这个概念是正好与标准的目录结构指定Maven

假设需要这种结构,如何properties从中加载文件META-INF

thufir@doge:~/NetBeansProjects/json_parser$ 
thufir@doge:~/NetBeansProjects/json_parser$ java -jar build/libs/json_parser-all.jarAug 18, 2017 6:44:24 AM net.bounceme.doge.json.Main main
INFO: starting
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.Main run
INFO: actually
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.PropertiesReader tryGetProps
INFO: properties
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.PropertiesReader getProps
INFO: properties
Exception in thread "main" java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at net.bounceme.doge.json.PropertiesReader.getProps(PropertiesReader.java:26)
    at net.bounceme.doge.json.PropertiesReader.tryGetProps(PropertiesReader.java:16)
    at net.bounceme.doge.json.Main.run(Main.java:18)
    at net.bounceme.doge.json.Main.main(Main.java:12)
thufir@doge:~/NetBeansProjects/json_parser$ 
thufir@doge:~/NetBeansProjects/json_parser$ jar tf build/libs/json_parser-all.jarMETA-INF/ …
Run Code Online (Sandbox Code Playgroud)

java jar meta-inf gradle maven

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

如果一个类调用另一个类,我可以将它们放在单独的JAR文件中吗?

假设我有两个班机场和飞机:

public class Airport
{
    public static void main(String args[])
    {
        Airplane a1 = new Airplane();
    }
}

public class Airplane
{
    int seats;
    public Airplane()
    {
        seats = 10;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将这些类放在单独的JAR文件中,以便将来可以相互独立地开发它们,以防出现任何问题.由于Airport调用Airplane我必须AirplaneAirport源文件中导入.我想在项目中导入它们,我将用它来调用这些类.但即使我在项目中导入它们,仍然存在解决问题.

更新:你能举一个例子.classpath来完成这个调用层次结构吗?我只是将JAR添加到主项目的.classpath中,但Airport抱怨它无法找到方法Airplane.

呼叫树我想要完成的事情

java import jar include

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

使用Java 8 jar命令从zip归档文件中提取4GB以上的文件时,“无效的CEN标头(错误的签名)”

我有一个包含5个文件的zip文件。其中四个文件很小(几KB),但是一个文件大于4GB。我知道JDK-4681995,它从Java 7开始向Java添加了大文件支持(64位zip支持)。我在Windows 8.1上使用64位Java 8:

C:\Users\user\Desktop>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
Run Code Online (Sandbox Code Playgroud)

压缩文件大小如下:

07/07/2019  10:18 AM       503,966,751 snapshot-20190707.zip
Run Code Online (Sandbox Code Playgroud)

压缩文件的内容为:

07/07/2019  09:53 AM                67 database.sha1
07/07/2019  09:51 AM     4,508,840,068 database.sql
07/07/2019  09:53 AM                74 database_schema.sha1
07/07/2019  09:51 AM            36,386 database_schema.sql
07/07/2019  09:51 AM            45,280 backup.log
Run Code Online (Sandbox Code Playgroud)

如果我尝试提取4GB文件,则会遇到一个异常,该异常看上去64位zip文件Java 7异常完全相同:

C:\Users\user\Desktop>jar xvf snapshot-20190707.zip database.sql
java.util.zip.ZipException: invalid CEN header (bad signature)
        at java.util.zip.ZipFile.open(Native Method)
        at …
Run Code Online (Sandbox Code Playgroud)

java zip jar large-files java-8

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