首页 > 其他分享 >远程开发?启动!

远程开发?启动!

时间:2024-07-16 13:30:40浏览次数:14  
标签:文件 java 启动 虚拟机 jar maven 开发 远程

OJ项目需要用到远程开发,那今天让我们一起从0到1实现远程开发吧~

文章目录

1、安装VM

这个教程自己去找吧,现在好像没有免费版本的了,需要自己找激活码

2、下载ubantu镜像

centos 停止维护了,所以用ubantu
下载地址:
https://releases.ubuntu.com/
选择18.04的稳定版本:
https://releases.ubuntu.com/bionic/

image.png

3、创建虚拟机并更改相关设置

改字体大小,语言等,更方便使用

4、下载软件

下载docker

sudo apt install docker.io

5、开启ssh服务

1)安装ssh服务器

sudo apt-get install openssh-server

2)查看ssh服务器是否已经开启

ps -ef | grep ssh

6、安装Java环境

1)安装jdk8

sudo apt install openjdk-8-jdk

2)检查 jdk8 是否安装成功

java -version

3)安装包管理工具maven

sudo apt install maven

4)检查 maven 是否安装成功

mvn -v

7、远程开发方式一远程部署

在本地电脑上写代码,通过文件同步的方式,将代码同步到虚拟机上,启动项目时,再用本地电脑连接远程服务器,通过远程执行命令的方式来编译代码,运行代码

本地电脑编写代码

就用代码沙箱项目来测试

文件同步

1)创建远程部署的配置
打开idea
tools - deployment-configration ,来创建一个远程部署的配置
image.png

2)配置文件同步
tools - deployment-configration
image.png

3)文件上传到虚拟机
项目根目录右键 - Deployment - Sync with Deployed to - 选择ubuntu
点击图中地方将文件传到虚拟机上,这里因为我已经传过了,所以是灰的
image.png

4)配置自动同步
这样后面就不用手动同步了
tools - deployment - Automatic Upload

5)配置本地文件删除时,虚拟机文件也删除
这样删除文件时,就不会弹窗询问你要不要把虚拟机的文件也删除了
tools - deployment - Options
image.png

运行项目

如何用windows电脑去远程操控虚拟机来运行项目呢?
答:
1)通过 idea 终端的箭头,连接上远程服务器(点击箭头就会显示你的远程主机名,连接就好了)
image.png
2)终端输入命令
springboot 是用 mvn 来启动项目
(下载依赖下载了好久,得二十分钟,注意:这里的依赖是下到了虚拟机中)

mvn spring-boot:run

出现bug: 编译成功,但是没有启动:

image.png
解决方案请看:BUG汇总第11条

部署项目

1)打包项目

mvn package

image.png

2)执行这个 jar 包

java -jar /home/dyz/code/target/yoj-code-sandbox-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

报错:/home/dyz/code/target/yoj-code-sandbox-0.0.1-SNAPSHOT.jar中没有主清单属性

这个错误通常是因为你的 JAR 文件缺少一个有效的主清单属性 (Main-Class),它告诉 JVM 应该从哪个类开始执行。为了生成一个可执行的 JAR 文件,你需要在 pom.xml 文件中配置 maven-jar-plugin 插件,以便在生成 JAR 文件时包含主清单属性。
1)在pom.xml中配置maven-jar-plugin:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.yupi.yojcodesandbox.YojCodeSandboxApplication</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

2)重新打包

mvn clean package

这个命令会清理项目并重新生成包含正确主清单属性的 JAR 文件。
然后重新执行

java -jar /home/dyz/code/target/yoj-code-sandbox-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

结果有了新的报错
报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.yupi.yojcodesandbox.YojCodeSandboxApplication.main(YojCodeSandboxApplication.java:10)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 1 more

这个错误表明你的 JAR 文件缺少 Spring Boot 的依赖。这通常是因为 Spring Boot 的依赖没有正确打包到你的 JAR 文件中。

解决方案:注释掉spring-boot-maven-plugin 中的 true
这个配置项会跳过插件的执行,意味着不会生成包含依赖的可执行 JAR 文件

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.yupi.yojcodesandbox.YojCodeSandboxApplication</mainClass>
<!--                    <skip>true</skip>-->
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

重新打包,重新执行,访问虚拟机ip地址:端口号/health,成了!

远程调试程序

(一般不这样使用)
1)在这里有个edit Configration

image.png
2)新建一个Remote JVM Debug
image.png
3)复制这一行参数,在执行 jar 包时添加上

 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005  -jar /home/dyz/code/target/yoj-code-sandbox-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

这样就可以远程 debug 啦

远程开发方式二便捷纯远程开发

优势

Idea自带的远程开发方式,更便捷简单

实现原理

直接把所有的源代码编译运行(甚至是编译器本身),全部都放到了服务器上,以服务器为主,而本地电脑仅仅是运行了一个能操作远程服务器的界面(JeBrains Client),类似云游戏,自己的电脑不存代码,不负责代码的运行,把脏活累活都交给服务器来干,这种远程开发方式适用于自己的电脑性能不高,服务器的性能很强,开发环境需要多人协作,大家需要统一一套开发环境的场景

步骤

1)新建远程开发项目

image.png

2)点击小齿轮新建连接

image.png

3)选择连接

image.png

4)在虚拟机上安装开发工具同时在本地电脑安装客户端界面

(记得指定目录)

image.png

5)JeBrains Client 设置,启动项目

指定一下jdk版本image.png

解决执行错误的坑在下面的地方加入这个参数
-Djdk.lang.Process.launchMechanism=vfork
image.png

出现Bug : maven插件爆红

image.png

(过了几天重新打开就好了)
成功启动
image.png

标签:文件,java,启动,虚拟机,jar,maven,开发,远程
From: https://blog.csdn.net/m0_74870396/article/details/140463879

相关文章

  • 推荐2款.NET开源、轻便、实用的Windows桌面启动器
    FlowLauncherFlowLauncher是一款.NET开源(MITLicense)、免费、功能强大、方便实用的Windows文件搜索和应用程序启动器,能够帮助你快速查找文件、启动应用程序和执行系统操作,提高工作效率和操作便利性。并且生态完善,有插件商店,你可以查看完整的插件列表,或通过"设置"中的"插件......
  • 基于Java+SpringBoot+Vue的创新创业教育中心项目申报管理系统的设计与开发(源码+lw+部
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • C#开发socket通信winfrom
    UI界面: 实现:服务端Server:开启服务端按钮点击事件ThreadthreadWatch=null;//负责监听客户端的线程SocketsocketWatch=null;//负责监听客户端的套接字privatevoidbutton3_Click(objectsender,EventArgse){try{//定义一个套接字......
  • 小程序开发基础01-学习路线
    微信小程序是一种运行在微信生态系统内的轻量级应用程序。它们无需安装、即用即走,为用户提供了便捷的使用体验。对于开发者而言,小程序开发是一种更简洁、高效的方式来触达用户。小程序开发简介编程语言:小程序使用的主要语言是JavaScript,以及配套的WXML(微信的HTML)和WXSS(微信的CS......
  • 浅谈AI是在帮助开发者还是取代他们?
    在软件开发领域,生成式人工智能(AIGC)确实正在改变开发者的工作方式,但它的作用更多是辅助而非替代。以下是对这一问题的详细分析:AI作为开发者的助手代码生成:AI工具如GitHub的Copilot可以根据上下文自动生成代码片段,极大地提高了编码效率。这并不意味着AI可以完全取代开发者,因......
  • 《战地2042》DX报错无法启动游戏怎么处理,战地2042启动游戏DX报错解决方法
    《战地2042》作为一款以现代战争为题材的、大规模的、可供多人在线游玩的第一人称射击游戏,其在上线初期以及后续的运营期间,有部分玩家在启动游戏时遇到了与DirectX有关的错误提示,以致无法顺利进入游戏。DirectX,又称DX,它是由微软公司推出的一套多媒体编程接口,主要用于处理游戏......
  • 开发必备,开源免费的 AI 编程助手
    AI大模型的火热,让开发圈近来如虎添翼,各种各样基于AI技术的开发者工具和新范式不断涌现,尤其是Github和OpenAI共同推出的CopilotX,更是一骑绝尘。本文推荐一些开源or免费的AI编程工具,不妨试着用起来。CodeGeeX有人称CodeGeeX是国产之光,被认为是GitHubCopilot......
  • PHP开发工具:打造高效的编码体验
    本文由ChatMoney团队出品在PHP开发领域,选择正确的工具可以极大地提升开发效率和代码质量。集成开发环境(IDE)PHPStorm是一个强大的IDE,专为PHP开发设计。它提供了丰富的功能,如智能代码补全、代码分析、实时错误预防、重构工具、数据库工具和版本控制集成。安装与配置PHPSto......
  • 优化PHP开发流程:精选工具与配置指南,提升代码质量与效率
    本文由ChatMoney团队出品在PHP开发领域,选择正确的工具可以极大地提升开发效率和代码质量。集成开发环境(IDE)PHPStorm是一个强大的IDE,专为PHP开发设计。它提供了丰富的功能,如智能代码补全、代码分析、实时错误预防、重构工具、数据库工具和版本控制集成。安装与配置PHPSto......
  • 新手入门 Git 开发
    Git的三个概念提交:commit仓库repository分支branch注意:downloadzip与指令行:gitclone的区别:gitclone是从仓库里下载下来的,会含有一个.git的文件夹,而downloadzip则没有这样的文件夹一些命令操作指令克隆仓库:gitclone初始化仓库:gitinit添加文件到暂存区:gitad......