标签: classpath

Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar ...我想从我的代码中使用commons-net-2.0.jar

Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar ...我想从我的代码中使用commons-net-2.0.jar.

如何强制它仅在我的代码中使用较新的JAR?

java weblogic classpath weblogic-10.x

9
推荐指数
1
解决办法
2万
查看次数

如何在类路径中为ant脚本添加一个文件夹?

我需要在当前类路径中为我编写的用于运行java文件的ant脚本添加一个文件夹.怎么做到呢?

java ant classpath

9
推荐指数
2
解决办法
2万
查看次数

使用自定义程序集描述符将类路径添加到清单

我有以下自定义程序集:

<assembly>
    <id>full</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
Run Code Online (Sandbox Code Playgroud)

以下配置部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
        <archive>
            <manifest>
                <mainClass>com.example.MyExample</mainClass>
                <addClasspath>true</addClasspath>
                <classpathPrefix>./lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

根据有关maven程序集插件的文档,这应该将一个类路径项添加到清单文件中,但它不起作用.如果我使用已弃用的程序集目标而不是单个目标,它确实有效.

我注意到有人提到存档部分只有jar格式,但这就是我正在使用的.

当他们弃用程序集:汇编时,他们是否定义了一种正确执行此操作的新方法?我真的不喜欢使用已弃用的功能,但如果它们破坏了工作方式并且没有正确记录它,我真的不知道如何避免这种情况.

有没有人有任何正确的例子?

classpath maven-3 maven maven-assembly-plugin

9
推荐指数
1
解决办法
2万
查看次数

ant中<path>和<classpath>的区别

在审查了蚂蚁文档之后,尚不清楚这些<path> 与<classpath>任务之间的差异.

有任何功能差异吗?它们基本上可以互换吗?

任何输入将不胜感激,谢谢.

java ant classpath

9
推荐指数
1
解决办法
1629
查看次数

PathMatchingResourcePatternResolver(spring)用法

我正在使用 :

PathMatchingResourcePatternResolver rr = new ...;
rr.getResources("classpath*:**/*.class")
Run Code Online (Sandbox Code Playgroud)

从目录和jar组成的类路径中获取所有类.该调用仅返回目录中的类; JAR文件被忽略.以下调用从JAR返回类:

rr.getResources("classpath*:org/**/*.class")
Run Code Online (Sandbox Code Playgroud)

是否可以在不知道基本包名的情况下获取所有类?

java spring classpath classloader

9
推荐指数
1
解决办法
6359
查看次数

使用Eclipse classpath变量来替换绝对的"sourcepath"路径?

我想使用Eclipse类路径变量来解析我的类路径中的库的附加源JAR文件.这是我目前在Elcipse(Indigo)中的".classpath"文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry exported="true" kind="lib" path="lib/ApacheCommons/commons-logging.jar"/>
  <classpathentry exported="true" kind="lib" path="lib/Spring-WS/spring-ws-1.5.8-all.jar"/>

  <!-- [other entries] -->

  <classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

当我现在为"spring-ws-1.5.8-all.jar"添加源JAR文件时,".classpath"文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry exported="true" kind="lib" path="lib/ApacheCommons/commons-logging.jar"/>
  <classpathentry exported="true" kind="lib" path="lib/Spring-WS/spring-ws-1.5.8-all.jar"
    sourcepath="D:/dev/sources/spring-ws-1.5.8-sources.jar"/>

  <!-- [other entries] -->

  <classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

如您所见,Eclipse使用绝对路径将"sourcepath"属性添加到"classpathentry"元素.

现在我的想法是用类路径变量"SOURCE_PATH"替换绝对路径,该变量被正确设置为"D:/ dev/sources".

(请不要问为什么我们有这个设置或建议我们必须更改它;它是一个旧项目,遗憾的是我们不能/允许更改构建结构).

我试过了

sourcepath="SOURCE_PATH/spring-ws-1.5.8-sources.jar"
Run Code Online (Sandbox Code Playgroud)

以及

sourcepath="${SOURCE_PATH}/spring-ws-1.5.8-sources.jar"
Run Code Online (Sandbox Code Playgroud)

但这两种变体都不起作用.

我似乎,我要么使用错误的语法,要么我不理解类路径变量的概念.也许classpath变量不能用于"sourcepath"属性?

非常感谢你的帮助!

java eclipse build classpath

9
推荐指数
2
解决办法
1万
查看次数

如何在MANIFEST.MF中处理类路径中带空格的文件?

我尝试使用中的Class-Path元素构建JAR MANIFEST.MF.我从外部源(我的情况下是Maven)获取类路径的元素.由于路径是绝对的并且超出了我的控制范围,因此它们可以包含奇怪的字符,如空格.

由于空格用于分隔类路径中的项目,因此该路径不起作用:

Class-Path: C:\User\Some Odd Name\project\target\project-1.0.0.jar
Run Code Online (Sandbox Code Playgroud)

如何在JAR Manifest中的类路径项中转义/编码奇数字符/空格?

java jar spaces classpath

9
推荐指数
1
解决办法
3614
查看次数

有没有办法判断类路径资源是文件还是目录?

例如,stream.read()假设com.google包存在于某个JAR(例如,Guava )中,此代码段会在该行上抛出NullPointerException(!).

ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("com/google");
InputStream stream = resource.openStream();
System.out.println(stream.toString()); // Fine -- stream is not null
stream.read(); // NPE inside FilterInputStream.read()!
Run Code Online (Sandbox Code Playgroud)

如果com/google与文件系统中的包而不是JAR交换,则代码段根本不会崩溃.事实上,它似乎读取该目录中的文件,由换行符分隔,但我无法想象在任何地方都指定了行为.

如果资源路径"com/google"指向"普通"资源文件或目录,是否有方法测试?

java classpath

9
推荐指数
1
解决办法
5390
查看次数

如何使用ArchUnit忽略测试类中的类

我写了我的第一个ArchUnit测试:

import static com.tngtech.archunit.library.dependencies.SlicesRuleDefinition.*;
// more non-static imports

@RunWith(ArchUnitRunner.class)
@AnalyzeClasses(packages = "my.domain.project")
public class PackageStructureTests {

    @ArchTest public static final ArchRule NO_CYCLES = slices().matching("my.domain.project.(**)")
            .namingSlices("package:$1").should().beFreeOfCycles();

}
Run Code Online (Sandbox Code Playgroud)

问题是它还分析了测试中的类,这些类不遵循那个简单的依赖约束.

如何将测试限制为"生产"类?

该项目使用Maven构建,因此这些类位于不同的目录中.

将名称以"Tests"结尾的类分开是不够的,因为有许多类不是测试,但只存在于测试类路径中.

architecture testing classpath archunit

9
推荐指数
2
解决办法
1518
查看次数

jdk.dynalink在Java 9中的bootclasspath中不可见

我们的项目是使用Eclipse OSGi开发的,但也提供了通过jardesc文件导出的普通JAR .该项目使用ASM库和javaagent来invokevirtual与invokedynamic调用交换.

这在Java 7和8中运行良好.现在,我们升级到Java 9并移植我们的实现以供使用jdk.dynalink.

java --version`
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

出口部分

  • OTRE_MIN:最小运行时和元对象协议部分.
  • OTRE_DYN:动态编织代码(ASM)和运行时的其余部分.
  • OTRE_AGEND:javaagent.

目前,OTRE_MIN还包括OTRE_DYN.所以一切都放入了bootclasspath.

我用以下代码启动程序

JVM_ARGS="-d64 -Xms1024m -Xmx4048m -ea"
MODULES="--add-reads jdk.dynalink=ALL-UNNAMED --add-reads java.base=ALL-UNNAMED"

${JAVA_HOME}bin/java $MODULES \
-Xbootclasspath/a:${OTRE_MIN} -javaagent:$OTREDYN_AGENT $JVM_ARGS \
-jar ...
Run Code Online (Sandbox Code Playgroud)

但是,似乎 jdk.dynalink在bootclasspath上不再可见包.

java.lang.NoClassDefFoundError: jdk/dynalink/linker/GuardingDynamicLinker
at org.eclipse.objectteams.otredyn.runtime.dynamic.CallinBootstrap.<clinit>(CallinBootstrap.java:19)
at org.eclipse.objectteams.otredyn.bytecode.asm.CreateCallAllBindingsCallInOrgMethod.<clinit>(CreateCallAllBindingsCallInOrgMethod.java:115)
at org.eclipse.objectteams.otredyn.bytecode.asm.AsmWritableBoundClass.createCallAllBindingsCallInOrgMethod(AsmWritableBoundClass.java:300)
at org.eclipse.objectteams.otredyn.bytecode.AbstractBoundClass.weaveBindingInImplementedMethod(AbstractBoundClass.java:1180)
at org.eclipse.objectteams.otredyn.bytecode.AbstractBoundClass.handleTaskList(AbstractBoundClass.java:741) …
Run Code Online (Sandbox Code Playgroud)

java module classpath bootclasspath

9
推荐指数
1
解决办法
197
查看次数