Java没有在$ CLASSPATH下编译.class文件

Rom*_*man 4 java packages class javac

我正在试图弄清楚如何组织使用包的源文件和类文件.我发现了一个非常有用的教程.但我还是有一些问题.

据我所知,在包名称和存储包元素的目录名称之间存在同构是一种好习惯.例如,如果我有一个名为aaa.bbb.ccc包含类的包,ddd那么最好有一个名为"ddd.class"的类文件,它位于"$ CLASSPATH/aaa/bbb/ccc /"中.我做对了吗?

如果是这种情况,Java编译器会自动将*.class文件放入正确的目录吗?

我无法得到这种行为.我将$CLASSPATH变量设置为 "/home/myname/java/classes".我执行了javac KeyEventDemo.java哪个包含package events;.我预计的javac将创建一个子目录events/home/myname/java/classes,并把KeyEventDemo.class该子目录.

它没有发生.我试图帮助javac并自己创建"events"子目录.我javac再次使用但它不想将类文件放在"/ home/myname/java/classes/events"下.我究竟做错了什么?

Chr*_*ung 6

您需要使用该-d选项指定.class文件最终的位置.只需指定基目录; javac将创建对应于正确包的必要目录.

示例(基于您的问题):

javac -d ~/java/classes KeyEventDemo.java
Run Code Online (Sandbox Code Playgroud)

  • 并澄清$ CLASSPATH:它将告诉JVM在运行时期间在哪里查找类,而不是告诉javac在哪里创建类这个答案和你的经验展示. (4认同)