当前位置: 首页 > 面试题库 >

将Jar文件与-classpath JAVA结合

茅慈
2023-03-14
问题内容

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


问题答案:

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

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

它是-cp直接货币/罐和的组合package name

假设您具有以下目录结构

+ 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包含该类的jar文件SayHello

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

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将其作为服务安装,甚至在将其作为服务安装时传递VM参数。 但由于这将在这里和那里部署,我想知道如何防止人们检索Jar文件中的源文件。这可能吗?我正在考虑将jar文件转换为。exe文件,并将其作为这样的服务安装,因为我发现有几个工具能够做到这一点。但他们似乎不允许我传递VM参数。 有人知道我该怎么做吗?

  • 我想在React项目的后端合并一个使用语音识别的Python文件。 这里我有一段使用语音识别的Python代码: 我尝试在react组件中导入文件,如下所示: 在这里,我尝试将我的按钮链接到Python文件中的函数: 我收到了它未能编译的消息以及以下内容: 我能做些什么来使这个工作?

  • 问题内容: 我正在做一个Maven项目。当在一个想法中编译和运行我的项目时,一切都很好,但是每当我创建jar文件时,都无法将web / lib /中的外部jar文件复制到jar文件中。为什么会发生这种情况?我可以将所有文件插入jar文件吗? 问题答案: 是的,我找到了解决方案。

  • 问题内容: 我有多个JAR文件,必须将其添加到Eclipse中的classpath中。 是否可以将30个文件合并为一个文件并包含该文件? 问题答案: 您可能想看看jarjar。 如果您使用Ant任务,也可以进行以下操作:

  • 问题内容: 我想将先前从其他文件(已经完成)中提取的一系列文件添加到jar中。这些文件将覆盖JAR中的文件。最有效的方法是什么?我需要它快。谢谢! 问题答案: 请记住,JAR文件是ZIP文件。 只需使用一些ZIP库。

  • 问题内容: 假设我的jar包“ com.test.io”中有一个名为test.txt的文件。 我将如何编写一个类来检索此文本文件,然后将内容复制到文件系统上的新文件中? 问题答案: 假设jar在您的类路径中: