2016-02-18 4 views
1

Я пытаюсь переключиться на Sublime Text 3, и у меня возникла одна проблема. Когда я пытаюсь использовать Java-пакеты для организации моего кода, linter вызывает ошибку, и я не могу строить со встроенной функцией. Вот код:Java Linter in Sublime Text 3

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(); 
    } 

} 

Это показывает ошибки на новом окне (строка 18 из Game.java) и в игре игры (строка 13 Window.java). Тогда он не будет строить с ошибкой, которая говорит:

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] 

Я полагаю, что это ошибка, но я классы не знаю, как это исправить, и я искал вечно на Google. Помощь очень ценится: D

+1

Хотя я обычно продвигаю Sublime практически ко всем, Java является моим единственным исключением. Из-за сложности всего импорта, зависимостей, нескольких исходных файлов, систем сборки, отладки и еще чего-то, вы бы гораздо лучше использовали IDE, например Eclipse, NetBeans или IntelliJ. Sublime's Javatar плагин хорош, но он просто не сокращает его по сравнению с бесчисленными функциями и помощниками в среде IDE. – MattDMo

+0

Да, я подумал, что просто использую возвышенное для редактирования текста, а затем просто компилирую и запускаю из командной строки вместо использования возвышенного. – user2272440

ответ

0

Javatar - действительно хорошая альтернатива. Хотя нет реальной проверки ошибок, он строит и работает красиво. Он также работает в паре w/linter. Я это рассмотрю.

2

В случае, если другие заинтересованы в решении проблемы пути класса Sublime-ЛИНТЕР, а не с помощью Javatar:

Установка args в конфигурации SublimeLinter позволяет передавать аргументы как к классам javac.

Например, следующая конфигурация определяет кодировку исходного файла, включает две библиотеки lib/some_lib.jar и lib/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"] не работает).