Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编译Java源文件?_Java_Compiler Construction_Packages_Javac - Fatal编程技术网

如何编译Java源文件?

如何编译Java源文件?,java,compiler-construction,packages,javac,Java,Compiler Construction,Packages,Javac,我的源文件位于以下文件夹中:c:\data\mycompany。 我所有的源文件都包含以下内容作为第一行:PackageMyCompany;现在,从c:\data文件夹中,我使用以下命令编译了所有内容:javac mycompany/*.java-extdirs c:\some\other\folder\with\libs。这很好。现在,当我尝试使用以下命令执行它(再次从c:\data执行):java mycompany/test时,我得到以下错误: 线程“main”中出现异常 java.lan

我的源文件位于以下文件夹中:c:\data\mycompany。 我所有的源文件都包含以下内容作为第一行:PackageMyCompany;现在,从c:\data文件夹中,我使用以下命令编译了所有内容:javac mycompany/*.java-extdirs c:\some\other\folder\with\libs。这很好。现在,当我尝试使用以下命令执行它(再次从c:\data执行):java mycompany/test时,我得到以下错误:

线程“main”中出现异常
java.lang.NoClassDefFoundError:
我公司/测试由以下原因引起:
java.lang.ClassNotFoundException:
mycompany.test位于java.net.URLClassLoader$1.run(未知源)

我还尝试了以下命令,但它复制了相同的错误:

java mycompany/test-extdirs c:\some\other\folder\with\libs

这是正确的编译/运行方式吗

以下是我的源代码:

package MyCompany;

public class Test
{
  public static void main(String[] args) 
  {
    System.out.println("test");
  } 
}

这就是说.class文件不在类路径上。如果您编译的方式应该是正确的,那么您需要在尝试运行测试代码时将包含生成的.class文件的目录添加到类路径中

java -cp <path to classes> classtorun
java-cp classtorun
因此,您的示例可能如下所示

java -cp <path to classes>;<path to libs> mycompany.Test
java-cp;我公司测试

您应该真正考虑将编译和构建自动化到一个新的版本。没有人用手来做这些烦琐的事情,因为重复的打字和出错的机会太多了。ANT的创建是为了避免所有这些细节,让您能够集中精力解决编码问题,而不是使用命令行工具。阅读。

也就是说.class文件不在类路径上。编译应该是正常的,当您尝试运行测试代码时,您需要将包含生成的.class文件的目录添加到类路径中

java -cp <path to classes> classtorun
java-cp classtorun
因此,您的示例可能如下所示

java -cp <path to classes>;<path to libs> mycompany.Test
java-cp;我公司测试

您应该真正考虑将编译和构建自动化到一个新的版本。没有人用手来做这些烦琐的事情,因为重复的打字和出错的机会太多了。ANT的创建是为了避免所有这些细节,让您能够集中精力解决编码问题,而不是使用命令行工具。阅读。

您需要设置。请参见示例。

您需要设置。参见示例。

调用java时不应该使用extdirs,应该使用-cp设置类路径


顺便说一下,在调用主java类时,应该提供类名,而不是类的路径,因此,很可能是mycompany.test(如果包含main的类名为test),而不是mycompany/test。这不是一个错误,因为Java为您修复了它。

调用Java时不应该使用extdirs,应该使用-cp设置类路径

顺便说一下,在调用主java类时,应该提供类名,而不是类的路径,因此,很可能是mycompany.test(如果包含main的类名为test),而不是mycompany/test。这不是一个错误,因为Java为您修复了它。

尝试以下编译方法:

mkdir classes
javac -d classes *.java
仅在第一次创建/classes目录。d目录告诉javac将.class文件放在/classes下

要运行,请执行以下操作:

java -cp .;classes MyCompany.Test
这应该可以很好地工作。

尝试编译以下内容:

mkdir classes
javac -d classes *.java
仅在第一次创建/classes目录。d目录告诉javac将.class文件放在/classes下

要运行,请执行以下操作:

java -cp .;classes MyCompany.Test

这应该可以正常工作。

应该从c:\data或c:\data\mycompany运行它吗?一旦我运行了它,我会看看ANT:)在开始声明包之前,您应该从项目的根目录运行它,这是默认包。您可以从任何地方运行它,只要您完全符合pathsANT的要求,就可以“完全运行”,没有人可以手动从命令行执行此类操作。ANT是用来自动处理你正在努力解决的所有棘手问题的。@fuzzy这里似乎什么都不管用。我在c:\data和c:\data\mycompany上试过。我的命令是:java-cp C:\data\mycompany mycompany.test应该从C:\data或从C:\data\mycompany运行此命令吗?一旦我运行了此命令,我将查看ANT:)在开始声明包之前,您应该从项目的根目录(默认包)运行它。您可以从任何地方运行它,只要您完全符合pathsANT的要求,就可以“完全运行”,没有人可以手动从命令行执行此类操作。ANT是用来自动处理你正在努力解决的所有棘手问题的。@fuzzy这里似乎什么都不管用。我在c:\data和c:\data\mycompany上试过。我的命令是:java-cp C:\data\mycompany mycompany.Test您必须包括每个包含类的子路径,而不仅仅是顶层路径,并且您需要将包名完全限定为主类mycompany.Test,类名应始终为大写。您的包名应与您的目录名完全相同。根据您的示例,目录名为mycompany。case很重要。我还将我的文件夹更改为“mycompany”。我仍然得到相同的错误:(您必须包括每个包含类的子路径,而不仅仅是顶层路径,并且您需要将包名完全限定为主类mycompany。测试时,类名应始终为大写。您的包名应与目录名完全相同,根据您的示例,目录名为mycompany,这一点也很重要。)将我的文件夹更改为“MyCompany”。我仍然收到相同的错误:(