我对 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 + ".inspirecloud.net";\n\n private static String loginApi = "/api/publish/Users/Login";\n\n private static String loginUrl = baseUrl + loginApi;\n\n private static String fetchBatchesApi = "/api/query/Messenger/ListBatchesQueryByUploadTime";\n\n private static String fetchBatchesUrl = baseUrl + fetchBatchesApi;\n\n private static String detailBatcheApi = "/api/query/Messenger/ReportQuery";\n\n private static String detailBatcheUrl = baseUrl + detailBatcheApi;\n\n private static Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.local.fr", 8080));\n\n private static int nbEssais = 4;\n\n private static String header = "nbClic;Email;Id;Name;Customer;CompanyName;LastUploadTime;Type;MessageType;EmailId;ToEmailAdr;SendindState;Delivered;DeliveryError;FirstView;LastView;ViewCount;Unsubscribe;ServiceUsed;CustomerId;UrlLandingPage;GMC1;GMC2;GMC3;GMC4;GMC5;\\n";\n\n private static Logger logger = Logger.getLogger(Main.class);\n\n public static void main(String[] args) {\n\n\n logger.info("D\xc3\xa9but des logs");\n\n HttpsURLConnection loginCon = null;\n HttpsURLConnection fetchBatchCon = null;\n HttpsURLConnection detailBatchCon;\n\n FileOutputStream fos = null;\n Scanner ficIn = null;\n\n int retry;\n\n String email;\n String password;\n String type;\n String from;\n String to;\n\n\n String cookie = null;\n String lineIn;\n String[] params;\n ArrayList<String> messagesMail = new ArrayList<String>();\n\n\n // Create a trust manager that does not validate certificate chains\n TrustManager[] trustAllCerts = new TrustManager[] {\n new X509TrustManager() {\n public java.security.cert.X509Certificate[] getAcceptedIssuers() {\n return new X509Certificate[0];\n }\n public void checkClientTrusted(\n java.security.cert.X509Certificate[] certs, String authType) {\n }\n public void checkServerTrusted(\n java.security.cert.X509Certificate[] certs, String authType) {\n }\n }\n };\n\n try\n {\n SSLContext sc = SSLContext.getInstance("SSL");\n\n sc.init(null, trustAllCerts, new java.security.SecureRandom());\n HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());\n } catch (GeneralSecurityException e) {\n logger.error("Probl\xc3\xa8me s\xc3\xa9curit\xc3\xa9");\n }\nRun Code Online (Sandbox Code Playgroud)\n\n然后这是 POM.xml :
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<project xmlns="http://maven.apache.org/POM/4.0.0"\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\n<modelVersion>4.0.0</modelVersion>\n\n<groupId>trackingGMC</groupId>\n<artifactId>TrackingGMC</artifactId>\n<version>1.0-SNAPSHOT</version>\n\n<build>\n <plugins>\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-jar-plugin</artifactId>\n <configuration>\n <archive>\n <manifest>\n <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n <addClasspath>true</addClasspath>\n <classpathPrefix>lib/</classpathPrefix>\n <mainClass>infra.Main</mainClass>\n </manifest>\n </archive>\n </configuration>\n </plugin>\n </plugins>\n</build>\n\n\n<dependencies>\n <dependency>\n <groupId>com.googlecode.json-simple</groupId>\n <artifactId>json-simple</artifactId>\n <version>1.1.1</version>\n </dependency>\n <dependency>\n <groupId>log4j</groupId>\n <artifactId>log4j</artifactId>\n <version>1.2.17</version>\n </dependency>\n</dependencies>\n\n</project>\nRun Code Online (Sandbox Code Playgroud)\n\n如果您需要更多信息,请随时询问。谢谢大家。
\n您必须将感兴趣的依赖项包含在您的 jar 中。查看此Inclusion dependency in a jar with Maven或此How can I create anexecutable JAR with dependency using Maven?
| 归档时间: |
|
| 查看次数: |
15506 次 |
| 最近记录: |