我有一个具有依赖项的项目,例如 X.jar,它有自己的依赖项 Y.jar。当我将 X.jar 作为依赖项包含在我的项目中时,我希望 X.jar 的所有依赖项都可以在我的项目中使用。
事实上,其他依赖项也是如此。当我运行 mvn dependency:tree 时,它会按预期列出依赖项及其依赖项,但无法列出 X.jar 的任何依赖项。
X.jar 是我编写的项目中的自定义 jar(我确实已将 X.jar 添加到本地存储库),所以问题可能就在那里。当我在 X 项目上运行 mvn dependency:tree 时,它会正确列出所有依赖项。
我不知道如何调试这个,任何帮助将不胜感激。
我创建了执行一些文件操作的 jar 文件,我需要将它们分发给网络上的一些人。但令我惊讶的是,该 jar 无法在他们的机器上运行!有人告诉我,另一个工作可以通过安装 Java 开发人员工具包来运行它,但如果我需要分发给多个人,这不是最好的方法。
我在这里有哪些选择,“最佳实践”解决方案是什么?我不想安装JDK(我想我只需要这里的JRE,但还没有测试),我是否可以简单地将jar重写成小程序,以便它可以在浏览器中运行?或者我应该弹出最新 JRE 版本的链接并要求他们下载它?
编辑:我通过 eclipse(Export>Runnable Jar) 创建了 jar,它生成了一个我可以运行的可运行 jar。当移动到另一台机器时,Windows 不知道用什么来打开文件。看来我需要JRE(我们在机器上安装的java只是浏览器插件,而不是我找到的JRE。)我想知道是否有一种方法可以在我这边做更多的工作来防止这种情况发生最终使用会更简单(Launch4j已经被建议,这就是我正在进入的,或者只是手动安装。)我已经在java中学习了一些类,但它们是纯编码,从未涵盖如何“分发”jar 。
我为两个 java 文件创建了一个 jar。
package com.json;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class SecondLevelJsonCreator {
private static final String CATEGORY_ID2 = "category_id";
private static final String CHILD_CATEGORY_TAGS = "child_category_tags";
private static final String PARENT_CATEGORY_TAGS = "parent_category_tags";
private static final String CATEGORY_NAME = "categoryName";
private static final String CATEGORY_ID = "categoryId";
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
try
{
File fileWI = new File("C://Users//intradhakr//Desktop//LEAF//LEAF_2Level.txt");
// …Run Code Online (Sandbox Code Playgroud) 我想创建仅用于提取 jar 文件的 RPM 包:
Name: pack-agent
Version: 1.0
Release: 1%{?dist}
Summary: Linux Agent installation script
Group: Utilities
License: license
Source0: pack-agent-1.0.tar.gz
BuildArch: x86_64
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
%prep
%setup -q -n opt
%build
%install
#install -m 0755 -d $RPM_BUILD_ROOT/agent
#cp -ap agent/* $RPM_BUILD_ROOT/agent/
install -m 0755 -d %{buildroot}/opt
#cp -a * %{buildroot}/agent
cp -a * %{buildroot}/opt
%clean
rm -rf $RPM_BUILD_ROOT
%files
/opt
%defattr(-,root,root,-)
%doc
%changelog
Run Code Online (Sandbox Code Playgroud)
事实证明,在 RPM 安装后,一些文件被损坏,因为有一种特殊的方法可以从 jar 文件中提取文件。我想也许在构建过程中使用了简单的 extract 命令。
有什么办法可以解决这个问题吗?我现在得到这个错误:
org.osgi.framework.BundleException: The bundle file:/opt/agent/deploy/System_Install-1.0.jar does not …Run Code Online (Sandbox Code Playgroud) 对于给定的 jar,我想找出该 jar 使用的所有类(尽可能)。由于我有很多罐子,我想自动化这个过程。到目前为止我最好的想法是
但我希望其他人以前做过类似的事情并给我建议。
假设您想要从 jar 文件名中提取名称和版本的最佳模式。我得到了一些不错的东西,它适用于regexr但不适用于 bash。这是因为 bash 不支持非贪婪正则表达式。那么应该如何处理呢?
#!/bin/bash
filename="./log4j-enhanced-3.5.100-v20130422-1538.jar"
if [[ "$filename" =~ \.\/(.*?)-([0-9].*)\.jar ]]; then
echo "name = ${BASH_REMATCH[1]}"
echo "version = ${BASH_REMATCH[2]}"
fi
# expected :
# name = log4j-enhanced
# version = 3.5.100-v20130422-1538
Run Code Online (Sandbox Code Playgroud)
使用 unix 实用程序是可以的,但请使其可读。
我在 Oracle jdbc 下载页面http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html中看到许多 jar 文件
我已经下载了以下驱动程序:
我正在尝试在我的 Tomcat 7 版本中使用它。我将所有这些 jar 文件添加到 $CATALINA_HOME/lib 文件夹中,但几天后我的 Tomcat 抛出此错误:
HTTP Status 500 - Servlet execution threw an exception
type Exception report
message Servlet execution threw an exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
java.lang.NoSuchMethodError: oracle.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/i18n/text/converter/CharacterConverter;
oracle.sql.converter.CharacterConverterFactoryOGS.make(CharacterConverterFactoryOGS.java:40)
oracle.sql.CharacterSetWithConverter.getInstance(CharacterSetWithConverter.java:135)
oracle.sql.CharacterSetFactoryThin.make(CharacterSetFactoryThin.java:195)
oracle.sql.CharacterSet.make(CharacterSet.java:555)
oracle.jdbc.driver.DBConversion.init(DBConversion.java:236)
oracle.jdbc.driver.DBConversion.<init>(DBConversion.java:133)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1704)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:385)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:564)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:251)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:563)
java.sql.DriverManager.getConnection(DriverManager.java:571) …Run Code Online (Sandbox Code Playgroud) 我尝试添加jnetpcap为依赖项maven。我在网上找到了以下应该添加到pom文件中的内容:
<dependency>
<groupId>jnetpcap</groupId>
<artifactId>jnetpcap</artifactId>
<version>1.4.r1425-1g</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我尝试了多个版本号,但 Maven 找不到版本:
找不到依赖项“jnetpcap:jnetpcap:1.4.r1425-1g”(版本为红色)。,
我还尝试通过 中的项目结构添加库IntelliJ。存储Maven库可以找到该jnetpcap库,但是当我尝试导入它时,我得到:
未下载 jnetpcap:jnetpcap:1.4.r1425-1g 的文件。
该库可以通过文件手动导入jnetpcap.jar,但我需要它作为我的 pom 中的 Maven 依赖项来创建项目的 jar 文件。否则我会得到一个无法执行的 jar 文件,因为它缺少依赖项。
有人知道我如何包含依赖项,或者如何在不丢失此依赖项的情况下创建项目的 jar 文件?
javac <name>.java我正在尝试使用mac 终端中的命令编译我在 Eclipse 中编码的 java 项目。但是,当我导出创建的项目时,它会导出为文件.jar。谁能告诉我如何将其转换为java文件,如何将项目导出为文件,或者简单地告诉我文件和文件.java之间的区别?.jar.java
我正在测试 Wildfly 可启动罐子。做了一个简单的项目并用“java -jar myapp-bootable.jar”启动它就好了。它基本上只包含一个index.html。够简单的。
下一步是围绕它构建一个 docker 镜像。但这不起作用。
这是 dockerfile
FROM maven:3.6.3-adoptopenjdk-15 as build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM adoptopenjdk:latest
COPY --from=build /usr/src/app/target/myapp-bootable.jar /opt/myapp-bootable.jar
WORKDIR /opt
CMD ["java", "-jar","myapp-bootable.jar"]
Run Code Online (Sandbox Code Playgroud)
我在我的Mac上使用相同的jdk并且它确实有效。我真的不明白为什么会收到此错误消息:
Exception in thread "main" java.lang.Exception: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.wildfly.core.jar.boot.Main.runBootableJar(Main.java:162)
at org.wildfly.core.jar.boot.Main.main(Main.java:141)
Caused by: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:337)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:293)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:254)
at org.jboss.modules.LocalModuleFinder.parseModuleXmlFile(LocalModuleFinder.java:250)
at org.jboss.modules.LocalModuleFinder.lambda$findModule$1(LocalModuleFinder.java:195)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
at org.jboss.modules.LocalModuleFinder.findModule(LocalModuleFinder.java:195)
at org.jboss.modules.ModuleLoader.findModule0(ModuleLoader.java:696)
at org.jboss.modules.ModuleLoader.findModule(ModuleLoader.java:689)
at …Run Code Online (Sandbox Code Playgroud)