saltfish666 / fileCloud

0 stars 0 forks source link

javac 编译配置 #7

Open saltfish666 opened 6 years ago

saltfish666 commented 6 years ago
public class Hi{
    public static viod main(String args[]){
        System.out.println("hi");
    }
}
$ javac Hei.java
//成功编译
saltfish666 commented 6 years ago
public class Hi{
    public static void main(String args[]){
        System.out.println("hi");
    }
}
$javac Hi.java
//成功编译

$ javap -c Hi.class
Compiled from "Hi.java"
public class Hi {
  public Hi();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String hi
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

//可见 java.lang包是默认导入的
saltfish666 commented 6 years ago

https://segmentfault.com/q/1010000014282946/a-1020000014284036

saltfish666 commented 6 years ago
  1. 新建文件夹,testImport。
    $ tree
    .
    ├── Main.java
    └── com
    └── a
        └── Hi.java
  2. Hi.java
    
    import com.a.Hi;

public class Main{ public static void main(String args[]){ Hi p1 = new Hi(); p1.sayHi(); } } // 包名和目录名好像没什么区别

Main.java 

import com.a.Hi;

public class Main{ public static void main(String args[]){ Hi p1 = new Hi(); p1.sayHi(); } }

$ javac Main.java //报错 $ javac com/a/Hi.java $ javac Main.java //成功


import 引入的是 .class,而不是.java

将Main.class 移动到其他地方,无法运行---import是根据相对目录动态链接的。
将com文件夹移动到相同目录后,可以运行Main.class.
saltfish666 commented 6 years ago

javac -cp /Users/apple/Desktop/springt/sp/spring-framework-5.0.5.RELEASE/libs/spring-beans-5.0.5.RELEASE.jar:/Users/apple/Desktop/springt/sp/spring-framework-5.0.5.RELEASE/libs/spring-context-5.0.5.RELEASE.jar Main.java

虽然可以,总是缺少依赖的类

终于在idea调试好了 后面 在 IDEA file--Project Struct --Models - dependencies --+ library 中将 Spring 的 libs 目录添加进去就行了。

saltfish666 commented 6 years ago

编译需要的jar包和编译后的class文件要提前设置好目录,不能轻易改动