这是我的目录结构.
/ user/a/user/b/user/b
在文件夹a,b,c里面有一个文件person.java(它是同一个文件,只是一行修改.
现在,在我的shell上,我在我的/ user /目录上,我试着这样做
javac */person.java
Run Code Online (Sandbox Code Playgroud)
shell返回以下错误,
person.java:14:重复的类:人
有什么可以解决这个问题吗?
简单的java代码片段.它有三个类.编译代码后,请删除A.class然后执行代码.代码仍然运行,为什么它不检查A的字节代码是否存在?
class A {
static {
System.out.println("In the class A");
}
public A() {
}
}
class B {
private A a = null;
static {
System.out.println("In the class B");
}
public B() {
a = new A();
}
}
public class ExampleLinkage {
static {
System.out.println("In the class A");
}
public ExampleLinkage(String str) {
}
public static void main(String args[]) {
try {
System.out.println("In the main method of ExampleLinkage");
Class.forName("com.bt.rtti.B");
} catch(Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的Java应用程序有一个类似于这样的包结构:
src/com/name/app
src/com/name/app/do
src/com/name/utils/db
Run Code Online (Sandbox Code Playgroud)
我如何将这些目录中的Java文件编译到可运行的jar中?我需要将所需的库打包到生成的JAR(jdbc)中.
我总是在Eclipse中完成这些工作,但现在我需要为几个人提供一种编译存储库而不使用eclipse的方法,我正在考虑制作一个makefile或一个调用必要的javac模式的脚本.
在尝试编译这个小型Java程序时,要使用java-gnome中的Notifier类(从最新的bzr分支构建):
import org.gnome.notify;
class Notifier {
public void Main(String[] args) {
Notification n = new Notification("Test notification", "Blah.", "");
n.setTimeout(2000);
n.show();
}
}
Run Code Online (Sandbox Code Playgroud)
编译时我得到以下输出:
$ javac -cp .:/usr/local/share/java/gtk-4.0.jar Notifier.java
Notifier.java:1: package org.gnome does not exist
import org.gnome.notify;
^
Notifier.java:7: cannot find symbol
symbol : class Notification
location: class Notifier
Notification n = new Notification("Test notification", "Blah.", "");
^
Notifier.java:7: cannot find symbol
symbol : class Notification
location: class Notifier
Notification n = new Notification("Test notification", "Blah.", "");
^
3 errors …Run Code Online (Sandbox Code Playgroud) 新手在日食,我有一个天真的问题.
我在Eclipse中找不到执行等效命令行"javac"的地方.如果我理解的话,从Eclipse进程菜单中"运行"为javac + java.所以我的问题是:在Eclipse下,我们如何才能用"javac"编译.java?谢谢.
有关信息,我注意到这篇类似的帖子 如何从Eclipse运行Javac 并没有回答我的问题.我的意思是"编译.java文件而不运行任何东西"
我正在尝试从Windows的命令行运行一个非常简单的一个类"Hello World"程序.
该.java文件位于"C:\ Users\UserName\Desktop\direcName".包是deem,类名是test.
我可以cd到目录并从那里使用编译它javac test.java,这完全正常.但是,当我尝试使用以下命令运行它时:
java test或者java -classpath directory test还是java -cp . test
会抛出"异常的线程main java.lang.NoClassDefFoundError: test (wrong name: deem/test).
如果我使用java deem.test它说:Error, could not find or load main class deem.main
如何修复异常并让我的程序运行?
谢谢
根据我的理解,如果硬件支持多处理器系统上的高速缓存一致性,则对其他处理器上运行的线程可以看到对共享变量的写入.为了测试这个,我用Java和pThreads编写了一个简单的程序来测试它
public class mainTest {
public static int i=1, j = 0;
public static void main(String[] args) {
/*
* Thread1: Sleeps for 30ms and then sets i to 1
*/
(new Thread(){
public void run(){
synchronized (this) {
try{
Thread.sleep(30);
System.out.println("Thread1: j=" + mainTest.j);
mainTest.i=0;
}catch(Exception e){
throw new RuntimeException("Thread1 Error");
}
}
}
}).start();
/*
* Thread2: Loops until i=1 and then exits.
*/
(new Thread(){
public void run(){
synchronized (this) {
while(mainTest.i==1){
//System.out.println("Thread2: i = " + …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本,它将自动执行我经常执行的一些任务.我的文件的文件夹结构是这样的:
./
sampleScript.sh
src/SampleProgram.java
Run Code Online (Sandbox Code Playgroud)
除此之外,我的Java程序依赖于ojdbc6.jar驻留的文件~/sampleFolder/lib.
我试图在我的脚本中编译和运行Java程序,如下所示:
javac -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" src/SampleProgram.java
java -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" SampleProgram
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.它似乎在我的程序中检查ojdbc6.jar依赖项的步骤失败.-cp基于此文件夹结构分配我的正确方法是什么?
我需要javac在gradle项目中指定路径.我可以通过在我的build.gradle文件中添加以下内容来完成此操作:
options.forkOptions.executable = '/home/mj/lib/jdk1.7.0_80/bin/javac'
Run Code Online (Sandbox Code Playgroud)
问题是这个文件在我们的存储库中共享,我不希望设置被推到那里.我尝试将它放在我的本地gradle.properties文件中,但它没有用.设置gradle.java.home也不会影响这一点.我想这是因为gradle gradle.java.home用于java而不用于javac,对吧?我也(绝望地)尝试设置一个gradle.jdk.home(不出意外)也不起作用!
项目之外是否包含在build.gradle中?
我正在阅读一些有关JVM的文章,并发现了一些令人困惑的信息。
例如此处:http : //www.cs.cmu.edu/~jcarroll/15-100-s05/supps/basics/history.html
它说:“实际上,Java编译器通常被称为JVM编译器(对于Java虚拟机)”。
此外,如果Java编译器是否是JVM的一部分,我将找不到确切的答案。我知道JVM是解释器,但我读到它也进行了一些编译。而且,据我所知,JVM是JRE的一部分。JDK的javac部分和JDK的JRE部分。
那么javac是JVM的一部分吗?我认为不是,但是不确定。