是否可以将相对目录(即foo/bar/plugh)添加到java类路径并使用
InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");
Run Code Online (Sandbox Code Playgroud)
要获取foo/bar/plugh/xyzzy.properties?
我的classpath看起来像这样:
foo.jar;foo/bar/plugh;xyz.jar
Run Code Online (Sandbox Code Playgroud)
我可以使用foo和xyz jar中的类和资源,但不能使用plugh目录.在这些情况下,in始终为null.
我不能让这个工作,我不确定这是否只是不支持,我错过了一些微妙或我做错了什么.我需要使用绝对路径吗?
我正在尝试从jar文件运行java程序.Java找不到支持marc4j的类.我究竟做错了什么.这是详细信息
在我当前的直接是MarcTry.jar我的主要课程.还有marc4j.jar,它有缺少的类:
org/marc4j/MarcReader
Run Code Online (Sandbox Code Playgroud)
例如:
java -jar MarcTry.jar线程"main"中的异常java.lang.NoClassDefFoundError:org/marc4j/MarcReader引起:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java)中的org.marc4j.MarcReader :202)在java.security.AccessController.doPrivileged(Native Method)java.net.URLClassLoader.findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc. java.lang.ClassLoader.loadClass(ClassLoader.java:248)中的Launcher $ AppClassLoader.loadClass(Launcher.java:301)找不到主类:marctry.Main.程序将会退出.
我试过了
java -jar MarcTry.jar -classpath marc4j.jar
有和没有marc4j.jar一个完全限定的路径.
欢迎任何想法.
我有一个看似棘手的Java库任务.
我需要编写一个适配器/辅助类来处理JTable具有一些附加功能的s,如果它JTable是a JXTable.但我不想在swingx-core-1.6.2.jar上添加运行时依赖,除非我的应用程序实际使用JXTable(在这种情况下它已经要求在类路径上有SwingX jar文件)
如何解耦我的代码来实现这一目标?我甚至不知道如何测试JXTable; 如果我尝试instanceof JXTable用作测试,这意味着我的代码已经对JXTable具有无条件的运行时依赖性.
我之前编写的Java库有"可选"的运行时链接依赖项:如果我在我的库中有这个:
package com.foobar.foolib;
// import from whizbang.jar
import com.whizbang.BloatwareThingy;
public class SuperObject
{
/* ... uses a BloatwareThingy ... */
}
Run Code Online (Sandbox Code Playgroud)
并且SuperObject是唯一使用whizbang.jar的类,然后只要我的最终应用程序不使用SuperObject,那么就没有运行时依赖于whizbang.jar; 如果我的最终应用程序确实想要使用SuperObject,那么它需要在类路径中包含whizbang.jar.从应用的角度来看是可选的.效果很好.
如何编写一个方法来测试给定的JTable是否为JXTable的实例,如果应用程序仅使用JTable,则不需要依赖SwingX jar文件?
我的代码被部署为JAR文件.JAR包含一个目录lib,其中包含我的代码所需的许多第三方JAR.我已经classpath使用Ant,通过它添加了这些MANIFEST.MF.
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 20.5-b03 (Sun Microsystems Inc.)
Main-Class: com.package.Class
Class-Path: ../lib/c3p0-0.9.1.2.jar ../lib/dbunit-2.4.8.jar ../lib/gua
va-10.0.1.jar ../lib/hsqldb.jar ../lib/javax.jms.jar ../lib/log4j-1.2
.16.jar ../lib/mockito-all-1.9.0.jar ../lib/ojdbc14.jar ../lib/slf4j-
api-1.6.4.jar ../lib/slf4j-log4j12-1.6.4.jar ../lib/xmlunit-1.3.jar
Run Code Online (Sandbox Code Playgroud)
还有一个queries.properties文件位于JAR的根目录中.
还有两个属性文件是必需的.我希望这些驻留在与JAR文件相同的目录中,并使代码能够找到它们.我相信代码能够找到这些属性文件,它们需要在classpath.因此,我需要将JAR文件的目录添加到classpath.
首先,这是正确的方法,我应该使用另一种方法来定位属性文件?
如果这是正确的,我如何使用Ant将JAR的当前目录添加到类路径中MANIFEST.MF?我在lib目录中添加了classpath使用manifestclasspathAnt任务的JAR .
我创建了一个批处理文件"run.bat":
set CLASSPATH=%CLASSPATH%.;.\Jars\app.jar;.\Jars\a.jar;.\Jars\b.jar;.\Jars\c.jar;.\Jars\d.jar;
java mypackage.mysubpackage.Start
pause
Run Code Online (Sandbox Code Playgroud)
我已将所有与我的应用程序相关的类文件保存在"app.jar"中,并且
Start是应用程序开始执行的类.我有这个"run.bat"文件和我的"app.jar"想要在同一目录中引用的所有jar文件.
我将所有这些罐子保存在"Jars"文件夹中,并在我的"run.bat"文件中引用它,如上所示.但是,要通过我的"run.bat"引用每个jar文件,我需要将路径指定为".\ Jars\jarname.jar".当我使用".\ Jars\*.jar"时,"run.bat"不会引用罐子.任何人都可以提供替代品吗?
我最近卸载jre7并安装了jre6,因为我的项目需要它.但现在我的程序显示类路径错误.如何在Eclipse中更改类路径?
错误是:
归档:C:/ Program Files/Java/jdk1.7.0_05/lib/tools.jar由类路径引用,不存在.
我有两个名为A和B的Java项目.它们都是作为war文件部署的Web应用程序.我分别在Eclipse工作区中创建它们.项目B使用项目A中的一个类命名MusicMapper.我加入了一个项目作为建议项目在Eclipse B的构建路径这篇文章.所以现在项目B可以编译而没有任何错误,MusicMapper通过在项目B中导入类,可以在项目B中看到类:
import com.projectA.MusicMapper;
Run Code Online (Sandbox Code Playgroud)
在我启动项目B的Web应用程序之前,一切似乎都没问题.但是,当我启动项目B并调用引用MusicMapper项目A中的类的代码时,我收到了以下运行时错误:
java.lang.ClassNotFoundException: com.projectA.MusicMapper
Run Code Online (Sandbox Code Playgroud)
所以这个错误似乎是由com.projectA.MusicMapper从项目A导入的未完成的类引起的.因为我已经将项目A添加到项目B构建路径并且项目B编译没有任何错误,为什么它在运行时报告此错误?
我采取的另一种方法是:我还尝试在项目B中使用以下Maven导入pom.xml:
<dependency>
<groupId>com.projectA</groupId>
<artifactId>projectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>/path/to/projectA.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
projectA.jar我从项目A导出的jar文件在哪里.但它仍然给了我相同的东西ClassNotFoundException.如何让项目A中的类可以被项目B使用?似乎我尝试过的这两种方法都不起作用.
我正在使用sbt-native-packager插件为我的应用程序生成一个启动脚本,这非常方便,因为这个插件生成了包含所有库依赖项的正确类路径规范.我没有分发这个应用程序,因此我没有把整个东西打包成一个tarball.我只使用libsbt-native-packager生成的目录,其中包含我的项目所依赖的所有jar文件,包括第三方库以及包含我自己的类和资源文件的jar文件.
在我的项目src/main/resources目录中,我有一些文件,我希望能够编辑,而不必使用sbt-native-packager重新生成整个安装,例如配置文件.这很困难,因为这些文件在我的所有类的jar文件中都被压缩了.
问题:如何告诉sbt-native-packager不要将我的资源文件放入jar文件中,同时仍然生成具有正确类路径的启动脚本,以便我的应用程序找到并读取这些资源文件,因为它们现在是从jar文件中?如果这意味着将所有类文件保留在一个好的jar文件中,只要文件src/main/resources保留为我可以更改的文件,而无需重新调用sbt stage,只要启动脚本有效.
首先,我已阅读所有其他解决方案帖子,到目前为止,没有一个有效.我正在使用Android Studio 2.0
错误:错误:(27,0)未找到Gradle DSL方法:'classpath()'可能的原因:
这是build.gradle(app):
apply plugin: 'com.android.application'
android
{
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.kandarp.food"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
classpath 'com.google.gms:google-services:2.0.0-alpha6'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-ads:8.4.0'
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
这是build.gradle(顶级):
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
}
}
allprojects { …Run Code Online (Sandbox Code Playgroud) Java 9引入了模块的概念,它没有明确地替换jar文件,但是旧--classpath选项似乎已经消失了.
该命令javac --help不再提及类路径.
我正在尝试针对JUnit编译一些学生作品:
> javac *.java --classpath junit.jar
Run Code Online (Sandbox Code Playgroud)
但是我会遇到各种错误,具体取决于我的尝试.对于上面的例子:
javac: invalid flag: --classpath
Run Code Online (Sandbox Code Playgroud)
我的Java版本是:
> java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我不是试图使用一个模块,只是一个.jar文件,我可以通过指定一个libs文件夹包含在IntelliJ中.
编辑:我真正的问题是我没有包括正确的罐子.针对IntelliJ的默认JUnit5配置进行编译工作:
javac -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\junit-jupiter-api-5.0.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\opentest4j-1.0.0.jar" *.java
Run Code Online (Sandbox Code Playgroud) classpath ×10
java ×7
jar ×3
eclipse ×2
android ×1
ant ×1
batch-file ×1
classloader ×1
dependencies ×1
deployment ×1
directory ×1
dsl ×1
gradle ×1
instanceof ×1
java-9 ×1
junit5 ×1
maven ×1
plugins ×1
scala ×1