我对 Maven 有疑问。我写了一个java代码,它在我的想法中运行。然后我使用 mvn package 来构建一个 jar。仍然没有问题。但由于某些原因,我不明白当我尝试执行 maven 创建的 jar 时出现此错误:
\n\n Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger\n at infra.Main.main(Main.java:53)\nCaused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger\n at java.net.URLClassLoader$1.run(URLClassLoader.java:366)\n at java.net.URLClassLoader$1.run(URLClassLoader.java:355)\n at java.security.AccessController.doPrivileged(Native Method)\n at java.net.URLClassLoader.findClass(URLClassLoader.java:354)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:425)\n at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:358)\nRun Code Online (Sandbox Code Playgroud)\n\n有人可以帮助像我这样的新手吗?
\n\n下面是java代码的开头:
\n\npackage infra;\n\nimport org.apache.log4j.Logger;\nimport org.json.simple.JSONArray;\nimport org.json.simple.JSONObject;\nimport org.json.simple.parser.JSONParser;\n\nimport javax.net.ssl.HttpsURLConnection;\nimport javax.net.ssl.SSLContext;\nimport javax.net.ssl.TrustManager;\nimport javax.net.ssl.X509TrustManager;\nimport java.io.*;\nimport java.net.InetSocketAddress;\nimport java.net.Proxy;\nimport java.net.URL;\nimport java.security.GeneralSecurityException;\nimport java.security.cert.X509Certificate;\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.Scanner;\n\npublic class Main {\n\n private static String companyName = "lolilol";\n\n private static String baseUrl = "https://" + companyName + …Run Code Online (Sandbox Code Playgroud) 目前我部署我war有jboss:hard-deploy我的JBoss AS 6.这很好,但我必须从SVN签出项目并打包它.
在war已经上传到我们詹金斯内部的快照库,这将是很好,如果我可以从该库下载测试服务器上,并直接使用maven其部署到JBoss.
这个问题与从存储库到远程服务器的Maven部署工件之争有关,但我不认为答案是正确的(参见那里的评论).
我想构建项目,以便最终jar包含单个jar文件中的所有依赖项(如果不可能包括从jar文件中的依赖项的类)我跟随线程包含Maven的jar中的依赖项但是包含了依赖项我甚至没有在我的pom中提到过.这是我的POM,只有两个依赖项.
我希望在构建final时,它包含它在pom中提到的特定依赖项(在类或jar形式中)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.myProject</groupId>
<artifactId>utils</artifactId>
<version>1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 在我的问题后,我现在想出了这个问题.我正在使用NetBeans 8.
我创建了一个Maven项目,我们称之为MyLibMaven,(我使用了New Project - > Maven - > Java Aplication),我将我的库,我们称之为MyLib,移到了这个Maven项目中.
现在,当我进入正常的Java项目(让我们称之为MyProject)并尝试将MyLibMaven作为库添加到MyProject时,我会在Netbeans中看到这个弹出窗口:
This project cannot be added because it does not produce a JAR file using an Ant script
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dwnz.my.lib</groupId>
<artifactId>MyLib</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<name>MyLib</name>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>17.0</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
/////////////////////////编辑//////////////////////// //////
我将项目移动到maven项目并将MyLibMaven添加为依赖项.但是现在当我尝试运行我的项目时,我得到了这个失败的错误:
--- exec-maven-plugin:1.2.1:exec (default-cli) @ TeseMaven ---
Could not load the icon: /view/images/enable-server-icon.png
Exception in thread "main" java.lang.NullPointerException …Run Code Online (Sandbox Code Playgroud) 例如,如果我将BukkitApi jar作为maven项目的依赖项,并将detanecy范围设置为提供,编译,系统,运行时或测试
bukkitAPI将在哪些范围内包含在编译输出中?