java在同一目录中如何引入自己的类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java在同一目录中如何引入自己的类?相关的知识,希望对你有一定的参考价值。

我想在Ex这个里面调用P这个类,明明都在同一个文件夹中,为什么会显示

如果在Ex中加上import test1.PrimNumber;这句就成功,但不是在同一个文件夹就可以不写么?
我新手,希望能详细指教!
另外为什么我写import test1.*;也不可以,一定要写明PrimNumber?

如果在的是同一目录,类是不用导入的。直接使用就行。

java中 如果想导入其他包中的类,可以用 import关键字导入;例:import com.A;(导入com包中的A类)
如果用的是(myeclipse 或者eclipse工具的话 ,)可以使用快捷键 Ctrl+shift+o就会自动导入了。
参考技术A Ex类是不是没加包名,
另外应该在上一级目录编译 F:\test> javac test1/P.java追问

我在test和test1这两个目录都放了Ex和P,然后Ex也加了和p一样的包名,然后在test里javac p和ex,再javac test1\Ex.java,最后在test里java ex就成功了,先谢谢,但是能解析下为什么要这么做呢?

追答

编译时包名是相当于当前目录来说,所有就找不到类,放回上一层目录后,包的结构就对了

本回答被提问者采纳
参考技术B 可能存在两个同样的类 所以必须明确声明导入的是哪个类
这个以前我好像也遇到过

如何使用.jar库编译Java程序

我不能让javac识别外部.jar文件,我试图扩展它的类。我在同一目录中有两个文件:TestConsole.java和acm.jar。我正在使用以下命令从同一目录编译:

javac -classpath .:acm.jar TestConsole.java

但似乎javac只是忽略了acm.jar。它给了我错误:

TestConsole.java:1: package acm does not exist
import acm.program;
          ^

当然,acm.program是acm.jar中的一个包。 acm.jar中的所有类都已编译;我只想在我的课程中使用它们,而不是编译它们。

我究竟做错了什么?

我在Mac上运行它,acm.jar的目录结构似乎是有效的:它包含一个acm/program目录,它有ConsoleProgram.classTestConsole扩展的唯一类。

javac -classpath ".:acm.jar" TestConsole.java也不起作用。

答案

清单:

  1. 您在acm.jar中的类显示为: ACM /程序/ CLASSX.class ACM /程序/ CLASSY.class 用jar tf acm.jar滗去
  2. 你导入它们像:

import acm.program.CLASSX;

要么

import acm.program。*;

另一答案
javac -cp <jar you want to include>;<jar you want to include> <source.java> 

<jar you want to include>如果在同一目录中,只需jar的名称即可,如果没有,则指定完整路径或相对路径

如果不止一个罐子,与,分开

;上的:替换unix

如果可能,请使用Eclipse之类的IDE。我曾经在类似的事情上花了很多时间,但在工业界,你几乎不会以这种方式去做。

另一答案

您是否在Windows计算机上运行这些命令?在Windows上,类路径的元素由分号分隔,而不是冒号。所以:

javac -classpath .;acm.jar TestConsole.java

另一种可能性:acm.jar的结构是错误的。内部的类文件是从声明package acm.program的文件编译的还不够 - 包结构也必须表示为目录层次结构,因此acm.jar必须包含目录acm,并且在其中包含实际类文件的子目录programTestConsole中使用的类。

另一答案

无论是谁在努力编译并且仍然遇到问题,因为我挣扎了好几个小时,我正在关注上面的所有答案仍然因为一个小问题而无法运行程序。

没问题的是每个包装后的半冒号。我不确定Mac或Linux,但对于Windows命令提示符,情况确实如此

javac -cp mysql-connector-java-8.0.12.jar; Testing.java

java -cp mysql-connector-java-8.0.12.jar; Testing

应该遵循案例编译或运行。

另一答案

我只是为成功编译后仍在寻找相同问题答案的人们添加。

编译时使用@Michael Borgwardt建议的命令:

javac -classpath .;acm.jar TestConsole.java

对于执行,您还需要指定类路径:

java -classpath .;acm.jar TestConsole

以上是关于java在同一目录中如何引入自己的类?的主要内容,如果未能解决你的问题,请参考以下文章

在Java中如何用import引入自己建的类

JAVA中,如何import自己写的类文件?

jsp页面不能引用自己写的类?

怎么样使用java包里面提供的类?自己定义的类名可以和包中的类名一样吗?怎么知道使用了java包里面的类?

java中如何安装.jar包

java中如何安装.jar包?