Java-import和package的用法

点击量:13

本文出自svtter.com
本文可以随意转载,但是转载请保留本信息.

之前一直都是用eclipse开发Java,Vim修炼到今日,本来想要拉出来溜溜Java,奈何package和import的
机制以及 synastic[自动检查代码的插件] 没有对于eclipse对java包类似的支持,所以只得滚回
eclipse,然后使用vrapper了。

闲话少说,听我细细道来package和import;

这篇文章主要是说明类似这种情况,即不同包但是文件路径一部分相同,即:

  • /temp
    • temp.java
    • tests/
      • joking.java

贴出源代码:

  • test.java:

    package temp;

    import temp.tests.joking;

    public class test {
    public static void main (String args[]) {
    joking a = new joking();
    a.test();
    }
    }

  • joking.java

    package temp.tests;

    public class joking {
    int a = 1;
    public void test() {
    System.out.println(a);
    }
    }

一种编译方法

这个时候打开test.java是没有办法通过拼写验证[synastic],需要这样:

javac -d . /tests/joking.java

然后再打开test.java, 可以了。但是这个时候有个很别扭的问题,我们发现这个时候生成了一个文件
temp/temp/tests/joking.class,也就是说我们的目录现在变成了这个样子:

  • /temp
    • temp.java
    • tests/
      • joking.java
    • temp/
      • test/
        • joking.class

请不要告诉我你很爽,因为这个目录给我的感觉很不爽- -试想,如果我们在别的目录下引用这个包,我
们就需要做很多这样的操作,造成的后果就是各个包里面出现无数个temp/test/joking.class
对我而言这是难以忍受的,我也想不太清楚为什么当初java这么设计 — 可能是为了避免耦合等问题?
软件工程这个地方学得不够好,先mark一下,或者有读者可以给我解释一下这个设计。或者说,下面这
个才是正确的。

另一种编译方法

退出到temp的上级目录,然后进行编译

javac -d . temp/tests/joking.class
javac -d . temp/test.java

然后这样运行:

java temp.test

可是这个时候我们打开temp.java, 利用synastic检查,报错。

总结

最后还是自己对synastic依赖性太强了。但是自己不会写= =,也是无奈了。开个issue求支持吧= =

后记

找到方法了 — 使用ant来构建项目。不过synastic的官方文档并没有说的很清楚,issue看起来又比较
费劲,饿死了,吃饭去。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注