Java项目导入IDEA的流程配置及常见问题解决(持续更新中...)

news2024/12/27 14:13:12

java

Java项目导入IDEA的流程配置及常见问题解决

本文主要演示一个普通 java 项目导入IDEA的流程步骤及可能出现的问题、原因及解决办法。

本文使用的部分软件版本如下:

IDEA 2018.3
JDK 1.8
Windows
cjw


1.导入Java Priject

导入之后可能发出现大面积红色,这里我们要配置一下java jdk(一般导入工程后会自动提示)和我们依赖的jar包(注意程序与jar版本间的对应),一般依赖的jar等在一个lib文件夹(可能没有)下:
在这里插入图片描述
解决方法:

1.配置java sdk和工程依赖问题

1.1 配置Java JDK

在IDEA中点击 FILE -> Project Structure -> Project:

在这里根据自己的项目工程实际配置 java jdk 版本(可能存在版本冲突)及编译输出(IDEA默认会自己识别,没有编译输出

也会出错,可参考第二部分常见问题的对应解决办法)

java jdk配置


1.2 配置工程依赖

这里实际是解决程序因依赖丢失或出错造成的程序部分代码段爆红的问题

STEP 1: 在IDEA中点击 File -> Project Structure -> Libraries -> + -> Java:
可以使用快捷键 CTRL+ALT+shift+S
在这里插入图片描述
选择jar包的位置:

lib
确定依赖jar及资源位置后点击 OK

在这里插入图片描述


STEP 2: 在IDEA中点击 File -> Project Structure -> Modules -> + -> JARS or directories:

在这里插入图片描述
选择对应的lib或者你下载好的jar位置,勾选后点击 APPLY:

在这里插入图片描述
这里配置结束后IDEA会自动进行更新和导入依赖资源,此时爆红消失。

1.3 设置 src 空间,指定Sources Root

到这步可能的现象为 启动类是灰色的,且main函数无法运行,没有绿色的三角main

STEP 1: 先找到启动类的 .java 文件,检查一下 package 路径,路径中不能出现以java命名的包名;

STEP 2: 在Java Project结构下选择根目录 src 后右键 ->Make Directory as -> Sources Root

nark
此时识别到了启动类,绿色的三角也出现了(run运行的按钮变成绿色):

main success


配置完成!!!
main
如果工程较大,文件很多,java类中的方法也特别多,我们可以通过点击IDEA左侧的Structure查看、查找:
structure


2. 常见问题

问题1:出现报错:java.lang.SecurityException: Prohibited package name: java.com.demo

java.com

1.1 原因

包路径里不能以java开头,preDefineClass方法首先对类名进行了检查,发现以java作为一
级包名,则抛出安全异常:禁止使用的包名!
这条安全异常是由Java类加载的“双亲委派模型”而导致。在双亲委派模型中,由父加载类加载的类,下层加载器是不能加载的。本例中最高层加载器BootstrapClassLoader加载了classpath路径下所定义的java.*包内的类,而java.research包就不能由BootstrapClassLoader的下层加载器AppClassLoader加载了。这也是java安全机制中对于恶意代码所采取的防护措施。

这里的package路径为 java.com.demo
package

1.2 解决方法

更换一个包名,右键 java 包选择 Refactor -> Rename -> 修改包名:
rename
此时即可正常运行了:
RUN SUCCESS


问题2:运行时报错:错误: 找不到或无法加载主类 java.com.demo.xxxx

no main class

2.1 原因

1.可能是有问题1引起,路径中存在以java开头的包名;
2. 类名错误
3. 类所在位置未添加至类加载路径中

2.2 解决方法

检查自己的类加载路径,检查类名,肯定有问题


问题3:Java JDK的版本兼容性问题

在IDEA中点击 file –> project structure –> sdks 选择电脑目前存在的与当前工程匹配的JDK:
java sdk

3.1 原因

当前的Java JDK与工程所用的JDK不兼容

3.2 解决方法

检查工程的JDK,选择工程对应的JDK


问题4:运行时报错the output path is not specified for module

error

4.1 原因

Java工程没有配置编译路径,实际就是缺了out
out

4.2 解决方法

在IDEA中点击File -> Project Structure -> Project -> Project compler output:

在工程路径后添加一个out路径即可,之后点击Run即可。
在这里插入图片描述


问题5:出现这个错误:Error:java: Compilation failed: internal java compiler error

5.1 原因

未配置编译路径

5.2 解决方法

配置编译路径
在IDEA中点击Settings -> Build -> Compilier-> Java Complilier -> +:
选择项目工程和对应的版本
complier


问题6:报错无效的目标发行版:17 的解决办法

11

6.1 原因

JDK 版本和电脑上不一致

6.2 解决办法

在IDEA中 Settings --> Build, Execution, Deployment --> Complier --> Java Complier 配置下的 Project bytecode version: 17 改为 与 项目使用的 JDK 版本一样即可,这里我使用的是 JDK1.8。
8


问题7:IDEA项目导入后文件名变成红色

注意是文件名红色,不是文件名下有波浪线!!!

7.1 原因

IDEA配置了版本控制工具如Git,Svn等,代码发生变化但还未提交,主要起提示作用,没啥影响;

7.2 解决办法

在IDEA中选择 file–> setting –> version Controller -> vcs选项选为 none
none


未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

StringTable

文章目录1. String的基本特性2. String的内存分配3. String的基本操作4.字符串的拼接操作5. intern()的使用6. G1中的String去重操作1. String的基本特性 2. String的内存分配 使用String的intern方法可以把字符串加入到字符串常量池。同时可以使用该方法来证明JDK8中字符串常量…

PL7022/PL7022B原厂双节/两节锂电池串联充电IC和保护IC

双节锂电池串联管理系列选型表: 型号 封装 功能 PL7022B SOT23-6 双节4.2V锂电池串联保护电路 PL7022 SOT23-6 双节4.35V锂电池串联保护电路 PL7501C ESOP8 升压型双节锂电池串联充电电路(VIN:5V) PL7222 ESOP8 降压型双节锂电…

ABC 分析法(帕累托分析法、2/8分析法)

在任何特定群体中,重要的因子通常只占少数,而不重要的因子则占多数,因此只要能控制具有重要性的少数因子即能控制全局。例如,在企业中,通常认为它80%的利润来自于20%的项目或重要客户;全球最富有的 20% 人口…

帮公司面试了一个33岁的程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验...

首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…

基于功能安全的车载计算平台开发:硬件层面

作为车载智能计算平台功能软件与系统软件的载体,硬件的失效可能直接导致功能软件输出不可信任的结果,从而违背安全目标。由于硬件故障在硬件生命周期中发生时间的随机性,在通过改善流程降低系统性失效的同时,ISO 26262功能安全标准…

Mysql的时间类型选定:Datetime,Timestamp,Bigint

1. 基本区别: 2. 其他特性: 1. TIMESTAMP是以utc格式存储,会自动检索当前时区对时间进行转换,而DATETIME不会。 2. 存入null时,TIMESTAMP会自动存储当前时间,而DATETIME存储null值。 3. 时间计算: DATETIME翻译为汉语即"时间戳",它是当前时间到 Unix元年(1…

RabbitMQ_消息的TTL与死信队列

什么是消息的TTL? TTL time to live,消息的TTL 消息的存活时间或过期时间 什么是死信队列? 当队列中的消息到达存活时间或过期时间后,若未设置死信队列,则该消息将被抛弃,反之则转入死信队列 死信队列 配置类 死…

Polygon zkEVM R1CS与Plonk电路转换

1. 引言 前序博客有: Polygon zkEVM的pil-stark Fibonacci状态机初体验Polygon zkEVM的pil-stark Fibonacci状态机代码解析rank-1 constraint system R1CS 由上图可知,zkEVM会借助SNARK来“验证((验证STARK证明)的SN…

博安生物再次冲刺港交所上市:负债规模高企,持续出现亏损

11月30日,山东博安生物技术股份有限公司(下称“博安生物”)再次向港交所递交招股书,准备在港交所主板上市。据贝多财经了解,博安生物曾于2022年5月13日递表,现已“失效”。 相较于此前招股书,博…

【图像分割】基于神经气体网络的图像分割与量化(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

了解抖音小程序的评级。为什么我的抖音小程序申请不了某个功能?

目录前言评级评级运营规范评级周期查看评级评级对应的权益小程序评级审核驳回场景信用分常见问题为什么我的小程序不能挂载短视频?前言 小程序评级体系是衡量小程序整体质量的参照,也是小程序获取对应权益的指南,旨在推动、鼓励开发者提升小…

matlab如何从信号中去除60 Hz Hum电源线噪声

美国和其他几个国家的交流电流以60赫兹的频率振荡。这些振荡经常会破坏测量值并且必须减去。 最近我们被客户要求撰写关于信号去噪数据的研究报告,包括一些图形和统计输出。 在存在60 Hz电源线噪声的情况下研究模拟仪器输入端的开环电压。电压以1 kHz采样。 lo…

C/C++内存管理(malloc/calloc/realloc/free/new/delete/operator new/operator delete)

目录 C语言中动态内存管理方式:malloc/calloc/realloc/free C内存管理方式:new/delete operator new与operator delete函数 new和delete的实现原理 malloc/free和new/delete的区别 (用法上和底层) 内存泄漏 C/C中程序内存区域划分: 1. 栈又叫堆栈…

Linux C简单服务器模型解析及完整代码

Linux C简单服务器模型解析及完整代码1.服务器端流程及解析2.服务器端代码3.客户端流程及解析4.客户端代码5.不足之处(注:流程解析可结合相应代码处一起理解)1.服务器端流程及解析 服务器端做的事情: 1.创建监听的套接字。 int s…

JAVA培训之数据库表关联关系

数据库表的关联关系有如下三种: 一对多 一对一 多对多 一对多的关系比较常见,我们在之前练习的都是一对多的关系操作,因此这里就不再重复介绍了。 1.一对一关系 在现实生活中,丈夫与妻子之间的关系就是一对一的关系&…

参数估计(1)-参数的点估计

为了考察总体X 的分布,我们将在2.4 节给出经验分布函数,并在总体X为连续型情形下绘制了频率直方图从中可大致看出总体的分布情况或分布形式,但总体分布中包含的参数往往不知.如何根据抽样对未知参数进行估计,就是本章讨…

pandas分组与聚合groupby()函数详解

一、groupby分组与聚合 分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况 DataFrame.groupby(byNone, axis0, levelNone, as_indexTrue, sortTrue, group_keys_NoDefault.no_default, squeeze_NoDefault.no_default…

基于docker部署实现接口自动化持续集成

01 jenkins介绍及docker部署 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 1、创建网络 2、下载并运行 docker:dind镜像…

思科路由器地址转换配置

思科路由器地址转换1.端口复用(PAT)2.配置PAT1.端口复用(PAT) 复用地址转换也称为端口地址转换(Port Address Translation,PAT),首先是一种动态地址转换。路由器将通过记录地址、应用程序端口等唯一标识一个转换。通过这种转换&am…

Linux 负载均衡介绍

Linux 负载均衡介绍 LB LB:Load Balancing,负载均衡(增加处理能力),有高可用能力,但不是高可用集群负载均衡集群,是以提高服务的并发处理能力为根本着眼点 负载均衡设备分类 1.软件负载均衡设备 (1)LVS&…