【问题标题】:Can't run java file (having trouble with classpath fixes)无法运行 java 文件(类路径修复有问题)
【发布时间】:2019-04-05 10:19:59
【问题描述】:

我从我的 Windows 机器远程连接到我不拥有的 Linux 机器。我有 2 个 java 文件:

DBConnect.java
Main.java

我在我的机器和我的 IDE(我正在使用 NetBeans)上编译和运行它们。当我将它们复制到远程 Linux 机器时,它们所在的位置是:

/home/NETID/myname/430

我使用以下方法编译它们:

javac *.java

它们编译成功,创建了两个新文件:

DBConnect.class
Main.class

然后我尝试运行 Main.class。使用以下每个命令,我都会收到错误“错误:无法找到或加载主类 Main”

java Main
java <pkg>.Main
java <pkg>/Main

就我而言,在 NetBeans 中,我的项目称为 MyProject。在 IDE 窗口左侧的目录结构中,有 MyProject。下面是一个名为 Source Packages 的文件。在那个文件中还有一个叫做 pkgMyProject 的东西。当我展开它时,我看到了我的两个 java 文件。

另外,在 Main.java 和 DBConnect.java 的顶部,有:

package pkgMyProject;

我在这里阅读了一些其他有关此问题的问题,但我无法理解答案。此外,许多答案都不适用,因为我认为我无法在远程机器上设置类路径。

当我在终端中检查我的类路径时(当我远程连接时)使用...

echo ${CLASSPATH}

...什么都不显示。

如何找到我的类路径,以及如何运行这些文件?

【问题讨论】:

  • I don't think I can set the classpath on the remote machine. 不,你可以做类似java -cp . Main
  • 如果你使用 bash,你也可以使用export CLASSPATH=/path/to/somewhere 设置CLASSPATH

标签: java package classpath


【解决方案1】:

我认为您缺少包文件夹。您需要在 Linux 机器中创建一个名为 pkgMyProject 的目录。然后,运行javac pkgMyProject/*.java,然后运行java -cp . pkgMyProject.Main

更新:您可以添加 -cp 来设置要在 java 命令中使用的类路径。

【讨论】:

  • 您可能还想包含 cmets 中提供的有关设置类路径的信息。
  • 完美,成功了。几个问题给你! 1)拥有一个包含所有这些文件的包名目录的目的是什么?是不是就像“这是一个文件包,它们都打包在这个目录中”? 2)“。”是什么意思?当我运行 Main 时怎么办?它只是意味着“这个目录”吗? 3)如果是这样,那么我说“从这个目录运行一个java程序,但是类文件的路径是首先进入pkgMyProject,它就会在那里。”对吗?
  • 1- 这是特定于语言的要求。在企业项目中,您将拥有超过 2 个类。文件夹/包结构允许您根据您的体系结构将系统分成模块或层。此外,通常您会将编译后的文件打包到.jar 文件中以进行部署。 2- 是的,它的意思是“这个目录” 3- 是的,java 中的完整类名由包和文件中的类名组成。它被称为完全限定名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2023-03-11
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多