classpath设置、javac/java执行class问题

本文详细介绍了如何在不同目录下运行Java程序,并解释了ClassPath的作用及其配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回想起还在学校的时候,那时学习Java基本上都是用工具的,比方说Eclipse、MyEclipse等。工具用多了,一旦脱离工具 才发现 成了废材。所以有空之余弄了下JDK下编译和运行。

有关JDK与JRE的功能就不多说了。实际如果只运行Java程序的话下载个JRE安装也行了。现在的JDK安装后里面都会有个JRE,因为JDK中一些运行程序也是Java写的,所以也需要一个JRE运行环境。

写了一个很简单的Hello Word 这应该是最常见的了。



将该文件位于D盘下;

配置好基本环境变量后,即:jdk、jre后

进入D盘目录,javac Stu.java进行编译成class文件;


然后运行刚编译好的class文件,输出Hello Word:



可是当切换目录到其他盘的时候再次运行将出现NoClassDefFoundError错误:



曾经为了这个问题郁闷了良久。心想:“为什么不能在任意目录运行自己的class文件呢?”;后来经过网上的资料总算是明白了过来。

原来Java命令运行和之前配置path中的jdk以及jre是不同的,即使是配置了jdk结果还是不能在任意目录下运行指定的class;

因此此时需要配置classpath

可以通过两种方法配置;

一、临时配置:set classpath=.;D:\;C:\   即:当前目录以及D盘、C盘。说明一下“.”点号表示当前目录的意思。

一、永久配置:在计算机——>系统属性——>环境变量中配置classpath内容和临时变量中的一样,就不多说了。

上面说的配置这个classpath路径到底有什么用呢?

看了很多网上的资料 大多说的很简单,也许这个问题真的很简单。大神们都不屑一顾了。

上面的classpath配置的内容就是:.class文件的存放目录。配置这个为的就是:当Java 运行命令执行时让JVM能找到所以编译后的class可执行文件。

同时呢,classpath配置后 其执行顺序是有规定的,JVM会先在classpath中找,然后才在当前目录中找,即:先classpath然后当前目录。这个和path刚好相反。有关path配置就不多说了。



上面的叙述 对于高手来说基本可以忽略了,不过对于新手上路的来说 还是值得一顾的!




FAILED: out/soong/.intermediates/packages/modules/Permission/framework-s/framewo rk-permission-s/android_common_apex30/javac/framework-permission-s.jar rm -rf "out/soong/.intermediates/packages/modules/Permission/framework-s/framewo rk-permission-s/android_common_apex30/javac/classes" "out/soong/.intermediates/p ackages/modules/Permission/framework-s/framework-permission-s/android_common_ape x30/javac/anno" "out/soong/.intermediates/packages/modules/Permission/framework- s/framework-permission-s/android_common_apex30/javac/srcjars" "out/soong/.interm ediates/packages/modules/Permission/framework-s/framework-permission-s/android_c ommon_apex30/javac/framework-permission-s.jar" && mkdir -p "out/soong/.intermedi ates/packages/modules/Permission/framework-s/framework-permission-s/android_comm on_apex30/javac/classes" "out/soong/.intermediates/packages/modules/Permission/f ramework-s/framework-permission-s/android_common_apex30/javac/anno" "out/soong/. intermediates/packages/modules/Permission/framework-s/framework-permission-s/and roid_common_apex30/javac/srcjars" && out/host/linux-x86/bin/zipsync -d out/soong /.intermediates/packages/modules/Permission/framework-s/framework-permission-s/a ndroid_common_apex30/javac/srcjars -l out/soong/.intermediates/packages/modules/ Permission/framework-s/framework-permission-s/android_common_apex30/javac/srcjar s/list -f "*.java" out/soong/.intermediates/packages/modules/Permission/framewor k-s/framework-permission-s/android_common_apex30/gen/aidl/aidl0.srcjar && (if [ -s out/soong/.intermediates/packages/modules/Permission/framework-s/framework-pe rmission-s/android_common_apex30/javac/srcjars/list ] || [ -s out/soong/.interme diates/packages/modules/Permission/framework-s/framework-permission-s/android_co mmon_apex30/javac/framework-permission-s.jar.rsp ] ; then out/host/linux-x86/bin /soong_javac_wrapper prebuilts/jdk/jdk17/linux-x86/bin/javac -J-Xmx2048M -J-XX:O nError="cat hs_err_pid%p.log" -J-XX:CICompilerCount=6 -J-XX:+UseDynamicNumberOfG CThreads -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -Xmaxerrs 9999999 -e ncoding UTF-8 -sourcepath "" -g -XDskipDuplicateBridges=true -XDstringConcat=inl ine -processorpath out/soong/.intermediates/tools/apifinder/java_api_used_by_mai nline_module/linux_glibc_common/combined/java_api_used_by_mainline_module.jar -p roc:none -Xlint:-dep-ann --system=out/soong/.intermediates/build/soong/java/core -libraries/core-module-lib-stubs-system-modules/android_common/system -classpath out/soong/.intermediates/frameworks/base/android_module_lib_stubs_current/andro id_common/turbine-combined/android_module_lib_stubs_current.jar:out/soong/.inter mediates/frameworks/libs/modules-utils/java/framework-annotations-lib/android_co mmon/turbine-combined/framework-annotations-lib.jar:out/soong/.intermediates/pre builts/sdk/current/androidx/androidx.annotation_annotation/android_common_apex30 /turbine-combined/androidx.annotation_annotation.jar:out/soong/.intermediates/fr ameworks/libs/modules-utils/java/framework-annotations-lib/android_common/turbin e-combined/framework-annotations-lib.jar:out/soong/.intermediates/packages/modul es/Permission/framework-s/framework-permission-s-shared/android_common_apex30/tu rbine-combined/framework-permission-s-shared.jar -source 11 -target 11 -d out/so ong/.intermediates/packages/modules/Permission/framework-s/framework-permission- s/android_common_apex30/javac/classes -s out/soong/.intermediates/packages/modul es/Permission/framework-s/framework-permission-s/android_common_apex30/javac/ann o @out/soong/.intermediates/packages/modules/Permission/framework-s/framework-pe rmission-s/android_common_apex30/javac/framework-permission-s.jar.rsp @out/soong /.intermediates/packages/modules/Permission/framework-s/framework-permission-s/a ndroid_common_apex30/javac/srcjars/list ; fi ) && out/host/linux-x86/bin/soong_z ip -jar -o out/soong/.intermediates/packages/modules/Permission/framework-s/fram ework-permission-s/android_common_apex30/javac/framework-permission-s.jar -C out /soong/.intermediates/packages/modules/Permission/framework-s/framework-permissi on-s/android_common_apex30/javac/classes -D out/soong/.intermediates/packages/mo dules/Permission/framework-s/framework-permission-s/android_common_apex30/javac/ classes && rm -rf "out/soong/.intermediates/packages/modules/Permission/framewor k-s/framework-permission-s/android_common_apex30/javac/srcjars" An exception has occurred in the compiler (17.0.2). Please file a bug against th e Java compiler via the Java bug reporting page (http://bugreport.java.com) afte r checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compile r in your report. Thank you. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for androidx.annot ation.RecentlyNonNull not found printing javac parameters to: /home/ts/jiangtao/gauss-chtmas/lagvm/LINUX/android /javac.20250730_102359.args [ 4% 373/8633] //external/guice:guice javac [linux_glibc common] warning: [options] system modules path not set in conjunction with -source 11 out/soong/.intermediates/external/guice/guice/linux_glibc_common/javac/srcjars/e xternal/guice/core/src/com/google/inject/internal/InternalFlags.java:125: warnin g: [removal] AccessController in java.security has been deprecated and marked fo r removal AccessController.doPrivileged( ^ out/soong/.intermediates/external/guice/guice/linux_glibc_common/javac/srcjars/e xternal/guice/core/src/com/google/inject/internal/BytecodeGen.java:142: warning: [removal] AccessController in java.security has been deprecated and marked for removal return AccessController.doPrivileged( ^ 3 warnings 10:24:04 ninja failed with: exit status 1 #### failed to build some targets (08:04 (mm:ss)) ####
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值