gpt4 book ai didi

java - 将 Jar 文件与 -classpath JAVA 组合

转载 作者:行者123 更新时间:2023-12-01 14:48:33 25 4
gpt4 key购买 nike

我有一个关于编译 Jar 文件 (MyJar.jar) 中有一些依赖类的类的问题。通过将目录树放在 -classpath 选项中(例如: javac -cp MyJar MyClass.java ),是检查所有子目录中的类还是仅检查目录树中的顶级类?提前致谢。

最佳答案

是否会递归搜索-cp指定的目录:否

当类加载器进入类路径中指定的目录时,它开始使用类所在的package作为子目录。如果未指定包,则类加载器将期望它位于该目录的直接子级(类文件)下。

它是-cp direcoties/jars和包名称的组合。

假设您有以下目录结构

+ Project
sayhello.jar
+ dir
+ sub
+ com
+ test
SayHelloMain.java

SayHelloMain.java的代码在哪里(注意包声明)

package com.test;

import miscellaneous.so.SayHello;

public class SayHelloMain {
public static void main(String[] args) {
SayHello.sayIt();
}
}

以及包含类SayHello的jar文件sayhello.jar

如果在与 java 源文件相同的目录中打开命令行,这就是编译类 SayHelloMain 的方式

javac SayHelloMain.java -cp ..\..\..\..\sayhello.jar

或者如果在目录Project中打开命令行

javac dir\sub\com\test\SayHelloMain.java -cp sayhello.jar

假设您在目录 Project 中打开了命令行

这是运行类 SayHelloMain

的方法
java -classpath dir\sub;sayhello.jar com.test.SayHelloMain

类名必须完全限定,因此com.test.SayHelloMain

命令

java -classpath dir;sayhello.jar com.test.SayHelloMain

由于不递归搜索目录dir,因此不起作用

命令

java -classpath dir;sayhello.jar sub.com.test.SayHelloMain

也不会工作,因为没有这样的包sub.com.test。包只是在类的包声明中定义的包

关于java - 将 Jar 文件与 -classpath JAVA 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15131498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com