标签: javac

为什么我不能在同名的匿名类之外调用方法

最后的代码产生编译错误:

NotApplicable.java:7: run() in  cannot be applied to (int)
                run(42);
                ^
1 error
Run Code Online (Sandbox Code Playgroud)

问题是为什么?为什么javac认为我调用run(),并且找不到run(int bar)?它正确地称为foo(int bar).为什么我必须使用NotApplicable.this.run(42);?这是一个错误吗?

public class NotApplicable {

    public NotApplicable() {
        new Runnable() {
            public void run() {
                foo(42);
                run(42);
                // uncomment below to fix
                //NotApplicable.this.run(42);
            }
        };
    }

    private void run(int bar) {
    }

    public void foo(int bar) {
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods javac anonymous-class

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

在Vim中调用javac.exe

我之前曾问过一个关于使用Vim来开发Java的问题,但我最终意识到JDK非常有效,而且对于像我这样的初学者而言,Ant太复杂了.事情变得更清楚了,现在我又有了一个问题.

当我使用'filename.java'这样的文件时,我需要能够在'filename.java'上使用'javac.exe',它位于Java Development Kit(JDK)中(我可以使用的典型项目)正在努力).通常,要在Vim外面这样做,我能做到

:Vim中的shell访问Vim外部的shell

C:\ Program Files ...\javac C:\ home-directory-of-filename.java\filename.java

这很长,因为我必须访问javac目录,然后编写整个'filename.java'目录.

无论如何要求Vim调用javac并直接在我正在处理的文件上使用它?如果有人能提供帮助,我会很高兴.我试图在我的_vimrc文件中写几个东西,但没有成功.顺便说一句,我是一个Windows Vista用户.

vim javac

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

编译时Java 6.0中的内存不足错误

我知道如何在运行时使用-Xmx -Xms,有没有办法让编译器分配更多的ram.我的电脑上有2场演出.我不使用IDE只是textpad.我正在尝试创建一个10,000,000位的BigInteger并对其进行操作.我尝试创建一个StringBuffer和ensureCapacity(10000000),它不会编译.是否有一个类可以用来告诉编译器我需要更多ram才能编译,或者编译时?我确实读过有关RunTime方法的内容,并且我将继续乘以BigInteger并观察堆.我尝试将字符串嵌入代码"1000000"+等10,000,000个数字,它也不会编译.

java memory javac

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

无法导入javax.servlet

我知道这是一个常见的错误,但请耐心等待.我一直在追求CLASSPATH问题,我认为这不是问题所在.我收到这样的错误.

./src/process.java:2: package javax.servlet does not exist
import javax.servlet.*;
Run Code Online (Sandbox Code Playgroud)

我安装了Tomcat和Java SDK,我知道Tomcat应该提供servlet API.但它究竟在寻找什么文件?

我有以下设置:JAVA_HOME =/usr/java/jdk1.6.0_16 CLASSPATH =/usr/share/java;/usr/share/java/tomcat6

tomcat的基本目录:/ usr/share/tomcat6在这个目录中,/ usr/share/tomcat6/lib只是/ usr/share/java/tomcat6的符号链接

tomcat6-servlet-2.5-api-6.0.18.jar在/ usr/share/java/tomcat6中,还有什么我需要告诉javac所以它会使用这个库吗?我需要另一个图书馆吗?

作为背景,我正在尝试运行一个hello world servlet.代码如下:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class process extends HttpServlet {

public void doGet( HttpServletRequest request, 
                   HttpServletResponse response)
              throws ServletException, IOException {

    PrintWriter out = response.getWriter();
    out.println("Hello World");

}
}
Run Code Online (Sandbox Code Playgroud)

当我使用javac编译它时,我得到以下错误(其中包括这是根本原因):

./src/process.java:2: package javax.servlet does not exist
import javax.servlet.*;
^
./src/process.java:3: package javax.servlet.http does not exist
import javax.servlet.http.*;
^
Run Code Online (Sandbox Code Playgroud)

我尝试使用-cp选项在命令行上指定类路径,但我最终得到了相同的结果.

import tomcat servlets javac

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

java编译器选项,即javac -d

我正在编译一个包含语句的程序.例如

package APPC_LU62.Runtime ;
Run Code Online (Sandbox Code Playgroud)

我还有一个与package语句匹配的预先存在的目录结构.

C:\APPC_LU62\Runtime
Run Code Online (Sandbox Code Playgroud)

如何让javac编译器在预先存在的内容中创建相同的目录结构?即

C:\APPC_LU62\Runtime\APPC_LU62\Runtime   
Run Code Online (Sandbox Code Playgroud)

在我看来,编译器应该足够"智能",以便在创建现有目录结构之前首先检查它.

谢谢

java javac

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

为什么这个javac:File Not Found错误?

在CentOS 5 linux上使用一些基本的java应用程序,我的classpath设置指向home/pathToJava/bin包含javacjava

我有.java文件home/pathToFolderA/src

home/pathToFolderB/gen-java

当我运行javac,并javahome/pathToFolderA/src一切完美

但是,当我javac从内部运行时home/pathToFolderB/gen-java,fileName.java我得到一个文件未找到错误,具体而言

javac: file Not found: fileName.java
Usage: javac <options> <source files>
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

谢谢你的帮助

java linux command-line centos javac

2
推荐指数
2
解决办法
6万
查看次数

执行java类文件的问题

我是java的新手.我写了一个这样的简单代码:

import java.io.*;


public class a
{
    public static void main(String []argc)
    {
        System.out.println("S");
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用下面的bash命令编译它:

javac a.java
Run Code Online (Sandbox Code Playgroud)

这个:

java a
Run Code Online (Sandbox Code Playgroud)

但它说:

无法找到或加载主类a

我的java版本是1.6.0.我该怎么办?

java javac

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

java comand有效但不是javac吗?

好的,所以我买了一台新电脑

Windows 7 Pro 64位Service Pack 1

我安装了jdk-7u25-windows-x64(jdk 1.7.0_25)

它安装在默认位置C:\ Program Files\Java\jdk1.7.0_25中

我将JAVA_HOME环境变量设置为C:\ Program Files\Java\jdk1.7.0_25

我将%JAVA_HOME%\ bin添加到Path环境变量中(是的,我使用了a;在添加之前)

点击确定

关闭所有CMD窗口打开它们

现在,如果我运行命令java,我得到预期的输出

但如果我运行javac命令,我会得到这个

C:\Users\AJ>javac
'javac' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我试过摆弄路径,但没有运气,并重新启动我的电脑等没有运气

如果我在jdk\bin目录中似乎也可以工作

C:\>cd C:\Program Files\Java\jdk1.7.0_25\bin

C:\Program Files\Java\jdk1.7.0_25\bin>javac -version
javac 1.7.0_25

C:\Program Files\Java\jdk1.7.0_25\bin>
Run Code Online (Sandbox Code Playgroud)

如何让javac命令像java一样正确运行

cmd javac environment-variables

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

Java字节码中的堆栈= 4.Java Compiler如何计算4值?(堆栈的深度)

Java代码:

public class SimpleRecursion {

    public int factorial(int n) {
        if (n == 0) {
            return 1;
        }
        return n*factorial(n - 1);
    }

}
Run Code Online (Sandbox Code Playgroud)

为factorial方法提供以下字节码(我执行javap来生成它):

public int factorial(int); 
descriptor: (I)I 
flags: ACC_PUBLIC 
Code:   
  stack=4, locals=2, args_size=2
     0: iload_1
     1: ifne          6
     4: iconst_1
     5: ireturn
     6: iload_1
     7: aload_0
     8: iload_1
     9: iconst_1
    10: isub
    11: invokevirtual #2                  // Method factorial:(I)I
    14: imul
    15: ireturn   
  LineNumberTable:
    line 4: 0
    line 5: 4
    line 7: 6   
  StackMapTable: number_of_entries = 1
    frame_type …
Run Code Online (Sandbox Code Playgroud)

java jvm bytecode javac javap

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

在没有jinterface的情况下使用asdf安装erlang

我正在尝试使用asdf安装Erlang(及更高版本的Elixir),但是jinterface由于安装过程似乎冻结而出现错误:

?  ~ asdf install erlang 22.1.1
Downloading OTP-22.1.1.tar.gz to /Users/me/.asdf/plugins/erlang/kerl-home/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   122    0   122    0     0    320      0 --:--:-- --:--:-- --:--:--   321
100 52.4M    0 52.4M    0     0  7604k      0 --:--:--  0:00:07 --:--:-- 9203k
Extracting source code
Building Erlang/OTP 22.1.1 (asdf_22.1.1), please wait...
APPLICATIONS DISABLED (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log)
 * jinterface     : Java compiler disabled by user

DOCUMENTATION INFORMATION (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log) …
Run Code Online (Sandbox Code Playgroud)

java erlang javac asdf elixir

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