如何使用编程方式创建JAR文件java.util.jar.JarOutputStream?我的程序生成的JAR文件看起来是正确的(它提取正常)但是当我尝试从中加载库时,Java抱怨它无法找到明确存储在其中的文件.如果我提取JAR文件并使用Sun的jar命令行工具重新压缩它,则生成的库可以正常工作.简而言之,我的JAR文件有问题.
请解释如何以编程方式创建JAR文件,并使用清单文件.
我用Java创建了一个程序,并且我设计了它以便我希望它们在main中出现(getter方法),我可以在启动包含这些方法的类之后轻松地调用它们.
问题是,我需要使这个应用程序(包含getter方法)就像一个API,以便我可以让我的应用程序让开发人员使用我的函数(getter方法),如果他们需要它们,只有他们的需要的是添加这个文件(我认为API完成后显示为.jar文件).
我怎样才能使我的代码可以重复使用其他应用程序?我认为它类似于.dll.
非常感谢 ;)
我有一个编译为jar的库(不是sbt项目,只是jar文件),它在存储库中不可用.
有没有一种简单的方法可以直接在文件系统/项目中添加对jar的引用?
我有一个jar,其内容如下所示,

以下是我的清单文件
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_06-b24 (Oracle Corporation)
Main-Class: org.sai.com.DerbyDemo
Class-Path: derby.jar derbyclient.jar derbynet.jar derbytools.jar
Run Code Online (Sandbox Code Playgroud)
当我尝试运行jar时,它抛出了一个ClassNotFoundExcception意思,它没有引用外部jar中的jar.
在Class-Path属性中,如何derby.jar在实际jar中引用jar(等)?
我已经xuggle library在我的项目中用来对来自的视频进行转码mp4 to flv.我也用它slf4j libraries来支持日志记录结束.
import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.IMediaViewer;
import com.xuggle.mediatool.IMediaWriter;
import com.xuggle.mediatool.ToolFactory;
public class TranscodingExample {
private static final String inputFilename = "E:\\VIDEO\\Facebook.mp4";
private static final String outputFilename = "E:\\VIDEO\\Facebook.flv";
public static void main(String[] args) {
// create a media reader
IMediaReader mediaReader =
ToolFactory.makeReader(inputFilename);
// create a media writer
IMediaWriter mediaWriter =
ToolFactory.makeWriter(outputFilename, mediaReader);
// add a writer to the reader, to create the output file
mediaReader.addListener(mediaWriter);
// create a media viewer …Run Code Online (Sandbox Code Playgroud) 有没有一个工具可以列出包含JAR中引用的(第三方)类的第三方"包"?假设它将从JAR文件定义中识别出什么是"home"包,它将打印出在JAR中引用的第三级的第三方类的完全限定名称列表.
org.apache.commons
org.apache.maven
javax.servlet.jsp
org.eclipse.persistence
org.apache.jackrabbit
Run Code Online (Sandbox Code Playgroud)
目的是我需要找到该JAR文件的maven依赖项并将其部署为maven工件.
我需要一些帮助尝试使用命令行运行以下maven项目:https: //github.com/sarxos/webcam-capture,webcam-capture-qrcode示例是我正在尝试运行的那个.我使用Eciplse IDE运行它,但需要将其移动到仅使用命令行.我有由maven创建的jar.
我尝试着
java -classpath ./webcam-capture/target/webcam-capture-0.3.10-SNAPSHOT.jar com.github.sarxos.webcam.WebcamQRCodeExample
Run Code Online (Sandbox Code Playgroud)
但我一直在接受
Exception in thread "main" java.lang.NoClassDefFoundError: com/github/sarxos/webcam/WebcamQRCodeExample
Caused by: java.lang.ClassNotFoundException: com.github.sarxos.webcam.WebcamQRCodeExample
Run Code Online (Sandbox Code Playgroud) 运行命令时如
mvn dependency:build-classpath
Run Code Online (Sandbox Code Playgroud)
要么
mvn exec:java
Run Code Online (Sandbox Code Playgroud)
Maven无法解析我的某个模块与另一个模块的依赖关系.
[错误]无法在项目解析器-app上执行目标:无法解析项目project_group的依赖项:A:jar:0.1-SNAPSHOT:找不到工件project_group:B:jar:0.1-SNAPSHOT
项目结构如下:
/pom.xml
/A/pom.xml
/B/pom.xml
Run Code Online (Sandbox Code Playgroud)
父母pom如下:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project_group</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.1-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>A</module>
<module>B</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
第一个子模块(未能解决依赖关系的模块):
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<dependencies>
<dependency>
<groupId>parent_group</groupId>
<artifactId>B</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
第二个子模块(依赖项):
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<name>B</name>
Run Code Online (Sandbox Code Playgroud) Duplicate files during packaging of APK app-debug-unaligned.apk放入2个jar文件时出现此错误:
httpclient-4.3.5.jar
httpmime-4.3.5.jar
进入libs文件夹后Sync with Gradle和Run.
如果用户1个jar文件 - httpmime-4.3.5.jar,我不会收到此错误.
请帮我如何避免这个错误,还可以使用上面的2个jar文件,
谢谢,
p/s:我使用Android Studio版本0.8.6.
Error Detail
错误:在APK ...\app\build\outputs\apk\app-debug-unaligned.apk打包过程中重复文件存档中的路径:META-INF/DEPENDENCIES原点1:...\app\libs\httpclient-4.3 .5.jar Origin 2:...\app\libs\httpmime-4.3.5.jar
build.gradle
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
applicationId 'com.app'
minSdkVersion 9
targetSdkVersion 20
versionCode 1
versionName '1.0'
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') …Run Code Online (Sandbox Code Playgroud)