我有一个关于在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在您的类路径中: