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

javac的classpath和sourcepath选项之间的差异

宁鹏程
2023-03-14
问题内容

我阅读了Sun文档以及有关Stack Overflow的大量文章,但是对于Java编译器选项-cp和的区别,我仍然感到困惑-sourcepath

假设我具有以下目录结构:

c:\Java\project1\src (where the Java source files are)  
c:\Java\project1\bin (where the Java class files will be or already are)

还要说我MainClass.java在package中有一个源文件com.mypackage,并且该目录结构在source文件夹中是可以的。

我在 project1 目录中并运行:

javac -d bin -sourcepath src src/com/mypackage/MainClass.java

要么

javac -d bin -classpath src src/com/mypackage/MainClass.java

和我得到相同的结果。在详细模式下,src两种情况下都将搜索源文件。

如果有人可以帮助我弄清楚这些选项的细节,那将是非常不错的。


问题答案:
 -classpath classpath

设置用户类路径,以覆盖CLASSPATH环境变量中的用户类路径。如果未指定CLASSPATH或-classpath,则用户类路径由当前目录组成。

如果未指定-sourcepath选项,则在用户类路径中搜索源文件以及类文件。

-sourcepath sourcepath

指定源代码路径以搜索类或接口定义。与用户类路径一样,源路径条目由分号(;)分隔,并且可以是目录,JAR存档或ZIP存档。如果使用软件包,则目录或归档文件中的本地路径名必须反映软件包名称。

请注意,如果找到了通过类路径找到的类,则它们会自动重新编译。



 类似资料:
  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。

  • 我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?

  • 问题内容: 我正在处理一些Spring XML配置文件,有时使用和有时。两者之间有区别吗?还是领先的可选/隐含/冗余? 问题答案: 我认为这两者之间没有任何区别。您将看到的最大区别是相对路径和类路径位置上的* 这是Spring Resources的节选,请参见4.7.2.2节 Classpath *: “ classpath :”前缀也可以与其余位置路径中的PathMatcher模式结合使用,例如

  • 问题内容: 可以将option与with一起使用,添加还是替换env变量的内容? 问题答案: 使用classpath变量,它会覆盖环境变量的CLASSPATH,但仅适用于该会话。如果重新启动应用程序,则需要再次设置classpath变量。

  • 我现在做了很多研究,以找出React Native项目、CRNA和世博会项目之间的确切区别和取舍。 我的主要指导是 但是,我仍然不明白,与使用本机代码的普通React本机项目相比,使用ExpoKit和本机代码有什么(不)优势,除了我不能在普通React本机项目中使用Expo API这一事实。 我知道,当我在世博会上启动一个项目时,我可以将其作为ExpoKit项目或React原生项目弹出。在这两种情