You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何从下载的源码创建Java包并导入使用?

解决Java包声明与commons-codec源码编译问题

咱们一步一步拆解你遇到的问题,其实是几个基础的Java语法和编译规则没搞对,很容易修正:

首先,你代码里的两个致命错误

  1. package语句的位置完全错了
    Java规定,package声明必须是文件的第一行有效代码(注释除外),绝对不能放在import语句后面。你现在把import java.util.*;写在package前面,编译器直接就会报语法错误。

  2. 包名不能包含连字符(-)
    Java的包名是合法标识符,只能用字母、数字、下划线和点号(.),commons-codec-1.11-src里的-是非法字符,这也是编译器指向package语句报错的核心原因之一。

正确的解决方案(分两种场景,选适合你的)

场景1:直接编译commons-codec源码并使用

commons-codec本身有规范的包结构(比如org.apache.commons.codec),你不需要自己给它声明包,只需要对齐目录结构:

  • 打开commons-codec-1.11-src,找到src/main/java目录,把里面的org文件夹整个复制到你的~/Documents/javapractice目录下。现在你的目录结构应该是:
    ~/Documents/javapractice/
    ├── org/
    │   ├── apache/
    │   │   ├── commons/
    │   │   │   ├── codec/
    │   │   │   │   ├── 所有commons-codec的Java源码文件
    ├── File.java
    
  • 修正你的File.java:把错误的package commons-codec-1.11-src;删掉,如果不需要自己的包,直接写正确的导入和类:
    import java.util.*;
    // 比如导入commons-codec的Base64类
    import org.apache.commons.codec.binary.Base64;
    
    public class File {
        // 你的业务代码
        public static void main(String[] args) {
            String encoded = Base64.encodeBase64String("test".getBytes());
            System.out.println(encoded);
        }
    }
    
  • 执行编译命令(类路径指向你的javapractice目录,因为org包在这里):
    javac -cp ~/Documents/javapractice ~/Documents/javapractice/File.java
    
  • 运行程序:
    java -cp ~/Documents/javapractice File
    

场景2:更简单的方式——直接用预编译的Jar包

自己编译源码比较麻烦,推荐直接下载commons-codec的Jar包(比如commons-codec-1.11.jar),放到~/Documents/javapractice目录下:

  • 修正你的File.java(同样去掉错误的package语句):
    import java.util.*;
    import org.apache.commons.codec.binary.Base64;
    
    public class File {
        // 你的代码
    }
    
  • 编译命令(把Jar包加到类路径):
    javac -cp ~/Documents/javapractice/commons-codec-1.11.jar ~/Documents/javapractice/File.java
    
  • 运行命令(注意Linux下用冒号分隔多个类路径项):
    java -cp ~/Documents/javapractice:~/Documents/javapractice/commons-codec-1.11.jar File
    

额外提醒

  • 尽量不要用File作为类名,Java标准库已经有java.io.File,容易混淆。
  • 如果你的自己的类需要放在自定义包下,比如package my.practice;,那必须把File.java放在~/Documents/javapractice/my/practice目录下,编译和运行时也要对应调整路径。

内容的提问来源于stack exchange,提问作者brad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:41:30