【问题标题】:Java Linter in Sublime Text 3Sublime Text 3 中的 Java Linter
【发布时间】:2016-05-30 05:03:02
【问题描述】:

我正在尝试切换到 Sublime Text 3,但遇到了一个问题。当我尝试使用 Java 包来组织我的代码时,linter 出现错误,我无法使用内置函数进行构建。代码如下:

Game.java:

package com.tatsu.main;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

public class Game extends Canvas implements Runnable
{
    private static final long serialVersionUID = 3582466025494978079L;

    public static final int WIDTH = 640, HEIGHT = WIDTH / 12 * 9;
    private Thread thread;
    private boolean running = false;

    public Game()
    {
        new Window(WIDTH, HEIGHT, "Game", this);
    }

    public synchronized void start()
    {
        thread = new Thread(this);
        thread.start();
        running = true;
    }

    public synchronized void stop()
    {
        try{
            thread.join();
            running = false;
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void run()
    {
        long lastTime = System.nanoTime();
        double amountOfTicks = 60.0;
        double ns = 1000000000 / amountOfTicks;
        double delta = 0;
        long timer = System.currentTimeMillis();
        int frames = 0;
        while(running)
        {
            long now = System.nanoTime();
            delta += (now - lastTime) / ns;
            lastTime = now;
            while(delta >= 1)
            {
                tick();
                delta--;
            }
            if(running)
                render();
            frames++;

            if(System.currentTimeMillis() - timer > 1000)
            {
                timer += 1000;
                System.out.println("FPS: " + frames);
                frames = 0;
            }
        }
        stop();
    }

    private void tick()
    {

    }

    private void render()
    {
        BufferStrategy bs = this.getBufferStrategy();
        if(bs == null)
        {
            this.createBufferStrategy(3);
            return;
        }

        Graphics g = bs.getDrawGraphics();

        g.setColor(Color.black);
        g.fillRect(0, 0, WIDTH, HEIGHT);

        g.dispose();
        bs.show();
    }

    public static void main(String args[])
    {
        new Game();
    }
}

Window.java:

package com.tatsu.main;

import java.awt.Canvas;
import java.awt.Component;
import java.awt.Dimension;

import javax.swing.JFrame;

public class Window extends Canvas
{
    private static final long serialVersionUID = 420967586702448927L;

    public Window(int width, int height, String title, Game game)
    {
        JFrame frame = new JFrame(title);

        frame.setPreferredSize(new Dimension(width, height));
        frame.setMaximumSize(new Dimension(width, height));
        frame.setMinimumSize(new Dimension(width, height));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.add(game);
        frame.setVisible(true);
        game.start();
    }

}

它在新窗口(Game.java 的第 18 行)和游戏游戏(Window.java 的第 13 行)显示错误。那么它就不会生成一个错误,上面写着:

D:\Users\Tyler Miller\Documents\Java\Workspace\Game\src\com\tatsu\main\Game.java:18: error: cannot find symbol
        new Window(WIDTH, HEIGHT, "Game", this);
            ^
  symbol:   class Window
  location: class Game
1 error
[Finished in 0.5s with exit code 1]

我想这是一个类路径错误,但我不知道如何修复它,我一直在谷歌上搜索。非常感谢您的帮助:D

【问题讨论】:

  • 虽然我通常向几乎所有人推广 Sublime,但 Java 是我的一个例外。由于所有导入、依赖项、多个源文件、构建系统、调试等的复杂性,使用 Eclipse、NetBeans 或 IntelliJ 等 IDE 会好得多。 Sublime 的 Javatar 插件很不错,但与 IDE 中的无数功能和助手相比,它并没有削减它。
  • 是的,我想我会使用 sublime 进行文本编辑,然后从命令行编译和运行,而不是使用 sublime。

标签: java sublimetext3


【解决方案1】:

Javatar 是一个非常好的选择。尽管没有真正的错误检查,但它可以很好地构建和运行。它也可以与 linter 配对使用。我会认为这已经解决了。

【讨论】:

    【解决方案2】:

    如果其他人对解决 Sublime-Linter 类路径问题而不是使用 Javatar 感兴趣:

    SublimeLinter 配置中的args 设置允许您将类路径等参数传递给javac

    例如下面的配置定义了源文件的编码, 包括lib/some_lib.jarlib/some_other_lib.jar 这两个库 在类路径中, 并将src/定义为项目的源路径:

    "SublimeLinter": {
        "linters": {
            "javac": {
                "lint": "all",
                "args": [
                    "-encoding", "UTF8",
                    "-cp", "${project}/lib/some_lib.jar:${project}/lib/some_other_lib.jar",
                    "-sourcepath", "${project}/src/"
                ]
            }
        }
    }
    

    请注意,选项及其值必须是数组中的单独元素 (即"args": ["-sourcepath", "/path/to/src"] 确实有效,而 "args": ["-sourcepath /path/to/src"] 不起作用)。

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 2016-06-28
      • 2017-07-16
      • 2014-05-14
      • 2021-09-08
      • 1970-01-01
      • 2013-07-05
      • 2023-03-24
      相关资源
      最近更新 更多