WSL配置java开发环境--失败

该博客主要介绍了在WSL上安装Java开发环境的过程,包括WSL、Java、Tomcat、Maven等的安装与配置,还涉及x server、sublime的安装,输入法添加及界面模糊问题的解决。同时提到了配置Intellij Idea时遇到的诸多问题,如监听端口、网络访问等,不过部分问题已解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 安装

1.1 WSL

  1. 首先安装WSL,参考windows上的linux子系统(WSL)
  2. 更换源。打开清华大学开源软件镜像站,找到对应自己版本的源,拷贝内容。
  3. 将原有源备份,创建新源
    sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    sudo vim /etc/apt/sources.list  #将内容张贴进去
    

1.2 Java

  1. 下载OpenJDK,这里下载Ubuntu中默认的java版本:
    $ sudo apt install default-jdk
    
  2. java环境变量。此时java已存在/usr/bin/java目录,因此不用设置PATHCLASSPATH默认当前目录,也不用设置,因此只设置JAVA_HOME,参考:零碎知识1.11。编辑~/.profile文件,添加一句:
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    

1.3 Tomcat

  1. 从官网上下载tomcat,然后在linux拷贝过来,解压到某个地方(我选择~/Software/目录)。
  2. 修改~/.profile,添加环境变量,tomcat需要确定自己的位置。但也不是必须的,idea配置tomcat不需要。
    export CATALINA_HOME=/home/luo/Software/apache-tomcat-9.0.16
    
  3. 为tomcat添加符号链接到~/bin目录下,该目录默认位于$PATH中,然后就可以在命令行中启动tomcat了
    $ ln -s /path/to/tomcat/bin/catalina.sh ~/bin/tomcat
    # 注意,第一个路径是指向catalina的绝对路径,这里随手写的
    

1.4 Maven

  1. 同样的配置,官方下载、拷贝、解压,这里不用设置环境变量PATH了,直接创建符号链接:
    ln -s /path/to/Maven/bin/mvn ~/bin/mvn
    # 注意项同上
    
  2. 为了加速maven,配置阿里镜像,在打开maven下conf/settings.xml,在mirrors节点下添加
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    

1.5 Intellij Idea

  1. 同样在官网上下载、拷贝、解压,但是这里创建脚本文件,主要为了打开idea后不会因为会话结束而结束(假设有x server)。创建脚本~/bin/idea
    /usr/bin/nohup /home/luo/Software/idea-IU-183.5912.21/bin/idea.sh >/dev/null &
    

1.6 x server

idea属于x client,需要x server的存在才能显示窗体,又因为wsl与windows共享网络的,因此可以在windows运行x server。这里使用vcxsrv,它的性能比xming好。下载后直接安装。

点击桌面上的XLauch
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
上面选择保存,保存到一个地方后(这里是有目的的,后面介绍),点击完成。然后在linux配置环境变量DISPLAY,x client需要该变量找到x server。修改~/.profile,添加:

export DISPLAY=localhost:0.0

然后运行idea,你会发现idea能够正常运行了。现在我们需要在windows中为vcxsrv设置自启,按win+R,输入shell:startup,将之前保存的文件放入进来,以后每次开机都会打开vcxsrv了。参考win10设置程序开机自启

1.7 sublime

有时候vim方便,有使用GUI编辑器更方便,因此这里安装sublime。这里参考教程:How to Install Sublime Text 3 on Ubuntu 18.04,然后发现它没有符号链接存在于PATH下,因此我们自己创建一个:

$ ln -s /opt/sublime_text/sublime_text ~/bin/sublime

sublime会自动运行为守护进程,会话结束不会被关闭,因此不用写额外的脚本。

1.8 添加输入法

使用sublime过程中,会发现输入法不能使用,因为这是在linux进程中,不能使用windows的输入法,而我们使用的Bash.exe能够在vim中输入中文,是因为它是一个windows进程。

  1. 首先导入windows的所有字体
    # 将windows的字体放入ubuntu里
    sudo mkdir /usr/share/fonts/windows
    sudo cp -r /mnt/c/Windows/Fonts/*.ttf /usr/share/fonts/windows/
    fc-cache
    
  2. 安装输入法,这里选择谷歌拼音
    # 安装输入法及所需的包,这里选择的是谷歌输入法
    sudo apt-get --assume-yes install fcitx fcitx-googlepinyin dbus-x11
    
  3. ~/.profile中添加环境变量
    # 设置中文 & 输入法
    export LC_ALL="zh_CN.UTF-8"
    export XMODIFIERS=@im=fcitx
    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx
    
  4. 设置zh_CN.UTF-8,然后重启shell
    sudo locale-gen zh_CN.UTF-8
    
  5. 运行fcitx服务,并配置它。fcitx是输入法使用的框架,或接口吧。
    fcitx # 如果报错,没关系,进程能够运行就行了
    fcitx-configtool # 确保此时Xserver为开启
    

在这里插入图片描述在这里插入图片描述
现在可以在sublime中使用中文啦,但是输入法依赖于fcitx服务,一般wsl不会存在服务,因此为了每次开机都能使用输入法,我们在bash shell的脚本中默认开启服务。在~/.profile中添加如下脚本代码:

# 模拟开启dbus和fcitx服务
if [ $(ps -ax | grep dbus-daemon | wc -l) -eq 1 ]; then
          eval `fcitx > /dev/null 2>&1`
fi

这里是我从其他地方抄来修改了下的,代码可能看着比较奇怪。

如果仍不能输入中文,可以尝试手动运行fcitx服务:

$ fcitx

最后,要提醒一点,当windows自启时,最好在x server启动后才打开,因为fcitx对x server有依赖,否则你需要手动键入fcitx

1.9 界面模糊

可能会发现,字体、界面很模糊,这和分辨率有关。原理不太清楚,直接上过程。这里我们要修改vcxsrv真正执行的程序,找到vcxsrv的安装目录,右键vcxsrv,点击属性:
在这里插入图片描述在这里插入图片描述
现在linux图形程序可以很清晰的显示了,如果觉得小,我们可以设置环境变量GDK_SCALE,控制它的缩放比例。这里不细说了。

二 配置idea

不写了,宣布

配置失败!!!1

因为我碰到了很多问题:

  • 第一,不能监听80端口问题,github有相关issue,它们通过卸载winegame、关闭虚拟机适配器、vpn解决,我一一尝试,没用!!!系统也更新到了最新,wsl也是一样。归根结底,还是wsl不够完善。
  • 第二,下载firefox不能访问网络,可以ping百度
  • 第三,转而让idea使用windows的chrome,又发现idea的On frame deactivation不可用,只有将焦点切换到wsl的sublime才能激活idea的这个功能。。。
  • 第三,对我的键盘不太兼容,,,无论英文键盘布局还是中文键盘布局,,,,,

因此,我还是玩windows吧。。。。


2019.6.13更新
经测试,目前问题一已被解决,可以监听1024以下的端口了

其他资料

https://zhuanlan.zhihu.com/p/36784160

<think>好的,我现在要帮用户解决在Windows电脑上本地使用Docker搭建Java开发环境的问题。首先,我需要确认用户的操作系统版本,因为Docker Desktop对Windows的版本有要求,比如需要Windows 10或11的Pro、Enterprise或Education版本,并且要开启Hyper-V和WSL 2。过用户可能清楚这些前提条件,所以在步骤里需要详细说明如何检查系统版本以及如何启用这些功能。 接下来,用户可能需要安装Docker Desktop,这里要提供下载链接,并指导安装步骤,比如下载后双击安装,完成后需要重启电脑。安装完成后,还需要确认Docker是否正常运行,可能通过命令行输入docker version来验证。如果有问题,可能需要排查Hyper-V和WSL是否启用正确。 然后是关于Java开发环境的镜像选择。用户可能对Docker镜像太熟悉,需要推荐常用的基础镜像,比如官方的eclipse-temurin,并说明如何拉取镜像,比如docker pull eclipse-temurin:17-jdk-jammy。同时,要提醒用户根据项目需求选择合适的版本,比如Java 11或17,同的镜像可能对应同的操作系统版本,比如Ubuntu或Alpine。 接下来是创建Docker容器运行Java应用的部分。这里需要分步骤说明,比如创建项目目录,编写一个简单的HelloWorld.java,然后编写Dockerfile,包括基础镜像、工作目录、复制文件、编译和运行命令。用户可能对Dockerfile的语法熟悉,需要详细注释每个指令的作用。 然后是构建镜像和运行容器的命令,比如docker build和docker run,需要解释每个参数的意义,比如-t指定标签,-v挂载卷方便开发等。用户可能对挂载卷的概念太清楚,需要说明这样做的好处,比如避免每次修改代码都要重新构建镜像,提升开发效率。 另外,用户可能想了解如何与IDE集成,比如在IntelliJ IDEA或Eclipse中配置Docker,这里需要简要说明插件或配置方法,但可能超出基础范围,可以建议用户查阅具体IDE的文档。 最后,常见问题部分需要考虑用户可能遇到的错误,比如端口冲突、镜像拉取失败、挂载目录权限问题等,给出相应的解决办法。比如提示检查端口是否被占用,使用docker ps查看运行中的容器,或者使用chmod修改目录权限。 整个过程中,要确保使用中文,术语准确,步骤清晰,避免使用复杂命令让用户困惑。同时,考虑到用户可能刚开始接触Docker,需要解释基本概念,但要过于深入,保持实用导向。另外,检查是否有遗漏的步骤,比如是否需要安装JDK在本地,但根据Docker的使用,实际上需要,因为镜像已经包含JDK,所以这点需要明确,避免用户误解。 可能还需要提醒用户关于Docker的网络配置,如果Java应用需要访问数据库或其他服务,可能需要创建自定义网络或使用docker-compose来管理多个容器。但用户的问题主要集中在Java开发环境,所以这部分可以作为扩展内容简要提及,或者留给用户进一步学习的建议。 总结下来,回答的结构应该是先介绍Docker的优势,然后分步骤详细说明安装Docker、拉取镜像、创建项目、编写Dockerfile、构建运行,以及IDE集成和常见问题。确保每个步骤都有明确的命令和解释,让用户能够按部就班地操作,同时预见到可能的问题并提供解决方案。</think>以下是在Windows电脑使用Docker搭建Java开发环境的详细步骤: --- ### 一、准备工作 1. **系统要求** - Windows 10/11 专业版/企业版/教育版(需启用Hyper-V和WSL2) - 至少4GB内存,建议8GB以上 2. **启用必要功能** ```powershell # 以管理员身份运行PowerShell执行: dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` 重启电脑后,设置WSL2为默认版本: ```powershell wsl --set-default-version 2 ``` --- ### 二、安装Docker Desktop 1. 下载地址:[https://www.docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop) 2. 双击安装包完成安装,重启电脑 3. 验证安装: ```bash docker --version # 输出类似:Docker version 20.10.17, build 100c701 ``` --- ### 三、搭建Java开发环境 #### 1. 拉取Java基础镜像 ```bash docker pull eclipse-temurin:17-jdk-jammy # 官方推荐的JDK镜像 ``` #### 2. 创建项目目录结构 ``` ├── src │ └── Main.java ├── Dockerfile └── docker-compose.yml (可选) ``` #### 3. 编写示例代码 `src/Main.java`: ```java public class Main { public static void main(String[] args) { System.out.println("Hello Docker Java!"); } } ``` #### 4. 编写Dockerfile ```dockerfile FROM eclipse-temurin:17-jdk-jammy WORKDIR /app COPY src ./src # 编译Java代码 RUN javac src/Main.java # 运行程序 CMD ["java", "-cp", "src", "Main"] ``` #### 5. 构建镜像 ```bash docker build -t my-java-app . ``` #### 6. 运行容器 ```bash docker run --rm my-java-app # 输出:Hello Docker Java! ``` --- ### 四、开发环境优化 #### 1. 挂载代码目录(实现实时修改) ```bash docker run -v ${PWD}/src:/app/src -it my-java-app ``` #### 2. 使用docker-compose(推荐) `docker-compose.yml`: ```yaml version: '3' services: java-app: build: . volumes: - ./src:/app/src working_dir: /app command: bash -c "javac src/Main.java && java -cp src Main" ``` 启动服务: ```bash docker-compose up ``` --- ### 五、IDE集成(以VSCode为例) 1. 安装插件: - Docker - Remote - Containers 2. 按`F1` → `Remote-Containers: Open Folder in Container`选择项目目录 --- ### 六、常见问题解决 1. **端口冲突** 修改容器端口映射: ```bash docker run -p 8080:8080 my-java-app ``` 2. **中文乱码** 在Dockerfile中添加: ```dockerfile ENV LANG C.UTF-8 ``` 3. **依赖管理** 使用Maven/Gradle时,建议使用多阶段构建: ```dockerfile FROM maven:3.8.6 AS build COPY . . RUN mvn package FROM eclipse-temurin:17-jdk-jammy COPY --from=build /target/*.jar app.jar CMD ["java", "-jar", "app.jar"] ``` --- 通过以上步骤,您已获得一个可移植、隔离的Java开发环境。后续可通过Docker Compose整合MySQL、Redis等其他服务组件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值