[英]Java: Setting Classpath
我有一个即将到期的项目,而且一切都进展顺利,但是java类路径正在变得越来越严重。 我将尽我所能尽可能清楚地解释这种情况。
因此,我们使用Javacc编写一种编程语言。 javacc文件编译成几个java文件。 Parser.java文件包括对其他生成的Java文件的引用和调用。 因此,生成后,我们将编译Parser.java文件。 问题是我们遇到了很多错误,包括无法识别对其他java文件以及我们自己的文件的调用。 我们在教室讨论板上询问了我们的问题,然后教授回答“您需要在课程路径中包含课程文件”。 好的,很好,问题是,我们该怎么做? 基本上,我们只有一个目录,其中包含生成的Java文件和其他帮助文件。
那么,我们尝试了什么?
我尝试更改.bashrc(Ubuntu)文件以包括正确的类路径,但这不起作用。 即
CLASSPATH=Home/project
(就像我在文件中使用的语法一样)
我试过编译执行
javac -cp . Parser.java
和
javac -cp "." Parser.java
都不起作用。
我试图在文件目录中编辑xml(我认为是xml).classpath文件。 仍然不起作用。
不知何故,我能够在我拥有的目录之一中编译Parser.java(我们最终创建了多个目录,其中包含相同的文件,这是徒劳的努力,以使某些工作正常进行),但是当我尝试运行时
java -cp . Parser.java
要么
java Parser.java
它说找不到主程序,并抛出(我相信,在我的另一台计算机上)它的ClassNotFound或ClassNotDefined异常(类似的东西,即使它存在,它也无法在Parser文件中找到主程序)。
我们尝试将软件包减速和导入语句添加到我们的文件中,似乎没有任何效果。
基本上:如何才能成功更改类路径,以便可以在我的计算机上编译并运行我的java文件(全部位于一个目录中,而不是受jared影响)?
谢谢您的帮助。 我非常感谢。
我强烈建议您研究Ant 。 一个简单的构建文件可以为您解决所有这些问题。
您不需要编辑.bashrc
或CLASSPATH
。
从命令行,您需要一起构建所有Java文件。 我不确定在生成javacc.jar
和Parser后JavaCC是否需要javacc.jar
。 但让我们假设它确实对某些通用AST支持有效。
javacc.jar
位于~/javacc-5.0/lib/javacc.jar
root
| Parser.java
| Lexer.java
| Program.java
要编译这些文件,我需要运行:
javac -cp ~/javacc-5.0/lib/javacc.jar Parser.java Lexer.java Program.java
那么我可以像这样执行Program
,如果程序具有main
java -cp ~/javacc-5.0/lib/javacc.jar:. Program
root
| org
| myproject
| Parser.java
| Lexer.java
| Program.java
那么您需要像这样执行javac:
javac -cp ~/javacc-5.0/lib/javacc.jar org/myproject/Parser.java org/myproject/Lexer.java org/myproject/Program.java
并执行
java -cp ~/javacc-5.0/lib/javacc.jar:. org.myproject.Program
root
| src
| org
| myproject
| Parser.java
| Lexer.java
| Program.java
那么您需要像这样执行javac:
javac -cp ~/javacc-5.0/lib/javacc.jar -sourcepath src src/org/myproject/Parser.java src/org/myproject/Lexer.java src/org/myproject/Program.java
并执行
java -cp ~/javacc-5.0/lib/javacc.jar:src org.myproject.Program
javac
和java
之间有区别。 您尝试以错误的方式使用它们。 javac
是一个生成* .class文件的编译器(在您的情况下为Parser.class)。 然后必须由java
运行此* .class文件。
所以如果我有Parser.java文件
class Parser {
public static void main(String[] args) {
System.out.println("Hi");
}
}
我将转到此文件所在的目录并在shell中运行:
javac Parser.java
比运行编译文件
java Parser
就是这样。 请注意,java文件中类的名称必须与文件名相同。
创建所有已编译类的Jar文件。 请参考本教程 ,了解如何创建jar文件。
使用此命令开始编程
java -classpath pathToJarFile com.abc.MainClass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.