有人可以帮我理解下面的 java cmd 行在做什么(分解以便更容易阅读)吗?我在我们的 AV 中发现了这个,但不知道这个 cmd 的整体作用。
从我的谷歌搜索中,我发现对于
-DACTIVE=true
,-D
设置了系统属性值。在这种情况下,我的理解是将 ACTIVE
值设置为 true
..?
我也明白
-classpath
在指定目录中搜索类文件。
不幸的是
com.zerog.lax.LAX
,我找不到它的作用/是什么。感谢任何帮助。
"C:\Users\user\AppData\Local\Temp\I1644615473\Windows\resource\jre\bin\java.exe" -DACTIVE=true
-classpath "C:\Users\user\AppData\Local\Temp\I1644615473\InstallerData\IAClasses.zip;
C:\Users\user\AppData\Local\Temp\I1644615473\InstallerData\Execute.zip;
C:\Users\user\AppData\Local\Temp\I1644615473\Windows\InstallerData\Execute.zip;
C:\Users\user\AppData\Local\Temp\I1644615473\InstallerData\Resource1.zip;
C:\Users\user\AppData\Local\Temp\I1644615473\Windows\InstallerData\Resource1.zip;
C:\Users\user\AppData\Local\Temp\I1644615473\InstallerData;
C:\Users\user\AppData\Local\Temp\I1644615473\Windows\InstallerData;"
com.zerog.lax.LAX
"C:/Users/user/AppData/Local/Temp/I1644615473/Windows/setup.lax"
"C:/Users/user/AppData/Local/Temp/laxF375.tmp"
基本上有 4 个部分:
java 命令及其选项(在本例中为 -D,它设置任意“属性”;正在运行的程序可能会需要这个)
类路径,告诉在哪里可以找到执行所需的所有代码。它是目录和/或 jar 文件的列表。
要运行的类 - 在本例中是类 com.zerog.lax.LAX,可以在类路径中列出的位置中的某个位置找到它,并且必须包含合适的 main() 方法。
要传递给 com.zerog.lax.LAX 的 main() 的参数。
直接来自
java -help
:
C:\Users\Hector>java -help
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-server to select the "server" VM
The default VM is server.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose:[class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
Warning: this feature is deprecated and will be removed
in a future release.
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -no-jre-restrict-search
Warning: this feature is deprecated and will be removed
in a future release.
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions with specified granularity
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
-D<name>=<value>
设置系统属性。在你的情况下:ACTIVE=true
事情是这样的:如果“ACTIVE”不是已知的系统属性,则必须在某处定义它。对于 Maven 项目,我会在 POM 中设置它们。以下是在 Maven 中执行此操作的方法:https://stackoverflow.com/a/3231981/2851311-classpath
或 -cp
是指定正在运行的应用程序的类路径的首选方法。为什么这是首选方式?原因很简单,如果您想从多台机器上执行程序,则必须在每台机器上设置类路径,或者只需在命令行指令中使用 -classpath
或 -cp
选项创建一个脚本,然后您将不必担心目标系统未正确配置以找到正在执行的编译单元。以下是有关使用这些选项的更多信息:
https://docs.oracle.com/javase/tutorial/essential/environment/paths.html当您想从目录执行
java.exe
时,操作系统(OS)必须知道在哪里可以找到这个可执行文件。系统中可能有许多同名的文件。操作系统解决了这个问题。首先,它假设 .exe
文件位于您尝试执行它的同一目录中。然后,如果在那里找不到它,它将按照出现的顺序转到文件系统上类路径集中列出的所有目录,并执行它找到的第一个目录。如果未找到匹配项,则会抛出错误。
您也可以提供
.exe
文件位置的完整路径。这是执行您要使用的 .exe
文件的最可靠方法。
我用这个插图来帮助您理解这与您要启动的程序相同。当你执行类似的事情时
C:\My Directory\> java HelloWorld
操作系统期望编译的单元位于“我的目录”中,或者可以在类路径中的某个位置找到它。 Java 提供了一种机制,使您能够灵活地查找编译单元。这是通过使用
-cp
或 -classpath
选项来实现的。话虽如此,只有当您的编译单元很简单并且没有任何依赖项和/或编译单元不在 JAR 文件中时,这才有效。
如果您的程序具有依赖项,则同样的概念适用:操作系统必须能够找到这些依赖项,以便在运行时加载它们。如果程序位于 JAR 文件内,则必须直接执行 JAR 而不是编译的(主)类。要执行 JAR,您必须使用
-jar
选项。
java -jar Example.jar
如果您的程序需要参数,您还需要从命令行传递它们。有关此主题的更多信息可以在这里找到:https://www.baeldung.com/java-run-jar-with-arguments
אנשלאנאנמטמטםמטםאנאנאנאנמטמטמטםמטםמטםאנמטםאנאנמטםאנשלשלאנמטמטמטמטמטאנאנמטםאנמטםאנשלשלשלשלשלאנאנאנאנמטמטמטםמטםמטםמטםאנאנאנאנאנאנאנאנאנ集מטםמטםאנשלאנאנמטמטםמטםאנשלשלשלאנאנאנאנמטמטמטםמטםמטםאנאנאנאנאנשלשלשלשל