- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个关于在 Linux 中为 java 编写 makefile 的新手问题
我有一个项目:
A.java
B.java
C.java
A依赖B.java和C.java,应该在同一个文件夹下
应该是进入文件夹后可以运行make命令生成类
如何将类路径设置为A B C文件的当前文件夹?
也许这个问题对你来说很容易,但我花了几个小时去谷歌,但仍然无法解决...
再次感谢。
我的 make 文件的详细信息是:
JFLAGS = -g
JC = javac
CLASSPATH = .
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
Heap.class: FibonacciHeap.java \
FileOperation.java \
MinLeftistTree.java \
RandomPermutation.java \
Heap.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
Heap.java 应该在编译其他 java 文件之后编译......
我在谷歌上搜索了很多,但不太了解命令 make... 的语法。
再次原谅我的新手问题...
最佳答案
如果您有这样的安排(我现在假设没有包裹):
/src
A.java
B.java
C.java
在/src
的同一层创建目录/classes
。然后在导航到包含 /src
和 /classes
的文件夹后在命令 shell 中运行此命令:
javac -d ./classes src/*.java
您将在 /classes
文件夹中找到所有的 .class 文件。
如果 C 有你需要运行的 main 方法,你会这样做:
java -cp .;classes C
这是我用来做的示例:
A.java:
public class A
{
public String toString() { return A.class.getName(); }
}
B.java:
public class B
{
public String toString() { return B.class.getName(); }
}
C.java:
public class C
{
public static void main(String [] args)
{
A a = new A();
B b = new B();
C c = new C();
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
public String toString() { return C.class.getName(); }
}
如果您坚持使用 make,也许这会有所帮助:
http://www.cs.swarthmore.edu/~newhall/unixhelp/javamakefiles.html
你不是斯沃斯莫尔学院的学生,对吧?
在这里,我已经为您的情况篡改了他们的作品。更改 .java 文件并查看它是否有效。
#
# define compiler and compiler flag variables
#
JFLAGS = -g -cp .:./classes -d ./classes
JC = javac
#
# Clear any default targets for building .class files from .java files; we
# will provide our own target entry to do this in this makefile.
# make has a set of default targets for different suffixes (like .c.o)
# Currently, clearing the default for .java.class is not necessary since
# make does not have a definition for this target, but later versions of
# make may, so it doesn't hurt to make sure that we clear any default
# definitions for these
#
.SUFFIXES: .java .class
#
# Here is our target entry for creating .class files from .java files
# This is a target entry that uses the suffix rule syntax:
# DSTS:
# rule
# 'TS' is the suffix of the target file, 'DS' is the suffix of the dependency
# file, and 'rule' is the rule for building a target
# '$*' is a built-in macro that gets the basename of the current target
# Remember that there must be a < tab > before the command line ('rule')
#
.java.class:
$(JC) $(JFLAGS) $*.java
#
# CLASSES is a macro consisting of 4 words (one for each java source file)
#
CLASSES = \
Foo.java \
Blah.java \
Library.java \
Main.java
#
# the default make target entry
#
default: classes
#
# This target entry uses Suffix Replacement within a macro:
# $(name:string1=string2)
# In the words in the macro named 'name' replace 'string1' with 'string2'
# Below we are replacing the suffix .java of all words in the macro CLASSES
# with the .class suffix
#
classes: $(CLASSES:.java=.class)
#
# RM is a predefined macro in make (RM = rm -f)
#
clean:
$(RM) *.class
关于java - 如何在 Linux 的 Java 生成文件中写入 "set classpath"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063863/
要求: 仅命令行,即没有 IDE 不想使用classpath参数 操作系统:OS X v10.6.8 步骤: 设置 CLASSPATH 环境变量:export CLASSPATH="/path-jar
将 JAR 添加到 IDE 中项目的 CLASSPATH 与将其添加到系统范围的 CLASSPATH 之间有什么区别? 最佳答案 后者对您正在运行的所有 java 应用程序都有效,而前者仅对项目有效。
我想做一个 setenv CLASSPATH /somethig/foo/junit-4.9.jar 类似的东西。进行一些搜索后(未检测到命令 setenv)。我发现我必须改用 export CLAS
在我的 RAD 中,当我启动它并转到我的工作区时,我经常看到一些项目有一个红色的错误十字标志。通常消息是某些库丢失等。但是通过转到每个项目的构建路径,我可以看到这些库存在于构建路径中。 我一直在通过删
在我的 RAD 中,当我启动它并转到我的工作区时,我经常看到一些项目有一个红色的错误十字标志。通常消息是某些库丢失等。但是通过转到每个项目的构建路径,我可以看到这些库存在于构建路径中。 我一直在通过删
这个问题在这里已经有了答案: Java will -classpath option add or replace CLASSPATH environment variable (4 个答案) 关闭
将 -classpath 选项与 java 一起使用是否会添加或替换 CLASSPATH 环境变量的内容? 最佳答案 使用类路径变量,它会覆盖环境变量的 CLASSPATH,但仅限于该 session
我有一个相对较大的 Java 应用程序,它将受益于对 Python 的一些热爱。为此,我一直致力于在 Jython 中启动和运行它。我目前的障碍是使类路径正确。 我采取了两种方法来设置类路径: 使用
这里我查看环境变量CLASSPATH daniel@daniel-laptop:~/ps/clojure/projects/ring-tutorial$ echo $CLASSPATH /home/d
我在该位置有文件 --src --> main --> config --> application --> context --> reference
MyClassWithMainMethod.java 使用 someJar.jar 的类。 如果我打电话: java -cp someJar.jar MyClassWithMainMethod 我得到
我正在处理一些 Spring XML 配置文件,有时它们使用 "classpath:/datasource.xml",有时使用 "classpath:datasource.xml"。两者有区别还是前导
Maven 识别 4 个类路径: maven.compile.classpath:编译源代码时需要在类路径中的类和 jar。所以基本上对于 maven-compiler-plugin maven.te
我想做一些类似于jython -cp FOO:BAR:BAZ argle.py的事情。 如果我将 FOO、BAR 和 BAZ 添加到 $CLASSPATH 中,则可以正常工作。我尝试在运行时将它们添加
我想确保 JAR 在部署到服务器之前不会抛出 NoClassDefinitionFound 异常。更高级的要求是能够指定额外的类路径。 如何做到这一点? 最佳答案 一般来说这是不可能的,因为您的 JA
我对 Java 还很陌生,只完成了编程入门类(class)的大部分内容,目前正在尝试通过实践来学习。在我设置了 libgdx 项目并导入它之后,我收到这两个警告,都说: “以下类路径条目在服务器的类路
同时尝试 mavenize Eclipse plugin for LESS遇到问题 #210 在 #208 中添加了提交 https://github.com/PaulVI/ow/commit/7c9
案例1: java -cp LRS3rdPartyClient.jar -jar tasks.jar 案例2: java -classpath LRS3rdPartyClient.jar;tasks
我正在尝试在Windows 7计算机上安装gradle 1.3并执行以下步骤 1.从http://www.gradle.org/网址下载了gradle-1.3.all.zip 2.将其提取到 F:\
我有一个名为App.jar的jar,其结构如下 App.jar | | |---xyzfolder | | | |--config
我是一名优秀的程序员,十分优秀!