标签: javac

linux编译多个java文件

这是我的目录结构.

/ 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:重复的类:人

有什么可以解决这个问题吗?

linux shell javac

1
推荐指数
1
解决办法
2374
查看次数

棘手的编译器行为

简单的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 javac

1
推荐指数
1
解决办法
197
查看次数

Java:如何从包中编译可运行的jar?

我的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 packages makefile javac executable-jar

1
推荐指数
1
解决办法
4082
查看次数

使用gnome-java的Java程序无法编译

在尝试编译这个小型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)

java gtk gnome javac

1
推荐指数
1
解决办法
1488
查看次数

Eclipse中的javac?

新手在日食,我有一个天真的问题.

我在Eclipse中找不到执行等效命令行"javac"的地方.如果我理解的话,从Eclipse进程菜单中"运行"为javac + java.所以我的问题是:在Eclipse下,我们如何才能用"javac"编译.java?谢谢.

有关信息,我注意到这篇类似的帖子 如何从Eclipse运行Javac 并没有回答我的问题.我的意思是"编译.java文件而不运行任何东西"

java eclipse javac

1
推荐指数
1
解决办法
1041
查看次数

在Windows中从命令行执行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 cmd exception javac noclassdeffounderror

1
推荐指数
1
解决办法
2093
查看次数

并发:缓存一致性问题还是编译器优化?

根据我的理解,如果硬件支持多处理器系统上的高速缓存一致性,则对其他处理器上运行的线程可以看到对共享变量的写入.为了测试这个,我用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)

java concurrency multithreading pthreads javac

1
推荐指数
1
解决办法
397
查看次数

Bash编译Java类和JAR

我正在尝试编写一个脚本,它将自动执行我经常执行的一些任务.我的文件的文件夹结构是这样的:

./
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基于此文件夹结构分配我的正确方法是什么?

java unix bash javac classpath

1
推荐指数
1
解决办法
133
查看次数

在用户的gradle.properties中设置JDK home(javac路径)

我需要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中?

javac gradle

1
推荐指数
1
解决办法
7664
查看次数

Java编译器是JVM的一部分吗?

我正在阅读一些有关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的一部分吗?我认为不是,但是不确定。

java jvm javac

1
推荐指数
2
解决办法
369
查看次数