Vscode中关于Java的一些问题

news2025/1/11 16:54:39

前言

在使用Vscode的时候,总是会有这么一种感觉:有时得这样,有时得那样,这让我甚是困惑,于是写下来这篇解答文章

为什么java文件有时候会有class文件,有时候没有

在编写Java代码时,我会有一种这样的错觉,即有些Java文件有字节码class文件,有些却没有,这是为什么,其实,这并不是什么奇怪的事情,只是因为在我初学Java的时候,会在某些文件夹下面用DOS命令编译运行Java文件,于是这个文件夹下就出现了class文件,当你用Vscode打开这个文件夹时,这个字节码文件也会出现在工作区,但是你在Vscode创建的本地Java文件,在Vscode里面编译运行,根本不会出现class文件,而且这个class文件完全被隐藏了,即使你在资源管理器里面也找不到class文件(真是令人吊诡,我怀疑是否真的有class文件,还是说只是被隐藏了,或是说运行完就被销毁了,下次运行再编译得到class文件,运行完再销毁之)

为什么有的时候可以用【ctrl+F5】运行C程序,有时运行的却是Java程序

当我同时使用Vscode既编写C文件,又编写Java文件时,遇到过这种情况,一般情况下我在运行C程序时就按【ctrl+F5】就可以调用外部控制台运行之,运行Java程序时,就点击Java插件提供的

【Run | Debug】中的Run也可以调用外部控制台运行之,两者互不干扰,甚好。但是,有时候,按【ctrl+F5】却会运行Java文件,这是为什么呢?原因在于你的C/C++插件未启动,只启动了Java的插件(你可以通过底部插件栏看插件是否启动)。这时候的解决方法如下:

 解决方案

1.

点击开始调试

2.

选择第二个,此时C程序成功运行,插件栏也出现了C/C++,证明插件启动成功

为什么有时候Java文件不需要包语句,有时候需要

这个问题我可是花了一个晚上加上摸鱼一节课的时间才总算解决的。我总结了以下规律:

1.在你的根目录下的文件无论如何都不需要包语句

2.以下针对打开新建文件夹(注意是新建文件夹)

如果你遵循以下步骤,可以不用使用包语句而运行Java程序

1.【新建文件夹】---->2.【用Vscode打开这个文件夹】----->3.【创建一个Java文件,命名为hi.java】---->4.【粘贴下列代码】---->5.【运行Java程序】

public class hi{
    public static void main(String[] args) {
        System.out.println("hi");
    }
}

你会发现这个Java文件不需要包语句也不会报错,并且在和这个Java文件同一个目录(我们不妨叫这个目录为“免疫目录”)下创建的Java文件都不需要包语句,属于是“群体免疫”包语句了。但是,请注意,只有这个免疫目录下的Java文件免疫包语句了,其他的任何目录(除了根目录)都无法免疫。

解释一下是为什么,因为你逃过了插件的限制,有插件在的话,你的Java文件都需要包语句,哪怕是在同一个目录下,应该是不允许无名包的存在吧。但是,Java插件需要在你创建一个Java文件后才会启动,并且需要启动时间。因此,在这个空档期间,你写的Java代码可以免疫插件束缚(因为插件还没完全启动),但是插件启动成功后,其他目录(除了根目录)下的Java文件都受到了插件的限制,需要包语句,否则会报错。但是,你在一开始写的脱去了插件束缚的Java文件所在的目录成为了“免疫目录”,这个目录下的Java文件都不需要包语句,即使插件启动后你在这个“免疫目录”下创建新的Java文件,也不需要包语句。

补充1:其实这个免疫的Java文件不一定就是在二级目录下(根目录的子目录),你可以创建一个n级目录,在这个n级目录下创建Java文件,也可以免疫,关键在于你第一个Java文件创建了才会启动插件,因此跟你的Java文件在创建的几级目录下没有任何关系。

补充2:如果你在新建Java文件后,没有趁着插件启动的空档期迅速写完Java程序(这也是为什么要复制我的示例代码,否则时间来不及),而是等到插件完全启动后再写Java程序,恭喜你,你的Java文件无法免疫包语句了,因为插件已经启动了(恶魔苏醒),你这个文件不能幸免了。

3.以下针对非新建文件夹

如果你通过Vscode打开的是一个非新建文件夹,那么在插件未启动的空档期前你创建了Java文件,并且在Java插件完全启动之前写完了Java代码,也是没用的,你的Java程序还是需要包语句,这也许是因为是非新建文件夹的缘故,第二点的方法已经失效了。但是,如果你的这个非新建文件夹里有“免疫目录”,那么这个目录下创建的Java文件仍然不需要包语句,这和第二点是一样的。

4.总结

总的说来,到底什么时候要包语句,什么时候可以不用呢。精炼的总结一下,只有两种情况不用:

1.根目录下的

2.免疫目录下的

其他情况下都需要包语句,插件不允许无名包存在。

工作区的有时出现,有时不出现的JAVA PROJECTS是个什么东西

这是一个插件,你新建一个Java文件后才会启动,如果只写C不会出现

为什么我有时候需要配置launch.json文件才可以调用外部控制台,有时不用配置也可以调用外部控制台运行Java程序

在之前,我的Java程序需要在lanch.json里面配置一条语句"console": "externalTerminal",才能调用外部控制台运行Java程序,但是后来发现,只要点击插件提供的【Run | Debug】选项中的Run就可以调用外部控制台,根本不需要配置这条语句。但是,又发现在有些Vscode里面(别人的电脑里发现的)又得加上这条配置语句才可以调用外部控制台,但有一个不同是这种情况是没有配置C/C++环境的情况。暂时还没有想明白这是为什么,因此,暂时记录在此,以供日后查看。

结语

写了一大堆没用的话,我想在沧海一粟中,根本没人能搜索到这篇文章,没什么特殊的标签,也不是什么大众的话题,即使看到这篇文章,也没人愿意看完,但更多是写给我自己看的,如果对别人有帮助更好,最后我想说,anyway,it's my way!

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

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

相关文章

自习室预订系统|基于springboot框架+ Mysql+Java+B/S架构的自习室预订系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 学生功能模块 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参…

R语言语法基础(说人话版)

在Rstudio中使用ctrl回车来执行某一行的代码 在R语言中,通常不需要像C语言一样在每条语句的结尾添加分号来表示语句结束。R语言是一种脚本语言,它使用换行符来分隔语句,因此分号通常是可选的,除非你想在同一行上写多个语句。在R中…

QMI8658芯片I2C驱动开发指南

这个芯片纯国产挺好用的,电路很好设计,我这垃圾焊功,纯手焊,,居然能用。 第一部分 硬件连接 画的很简陋,看看就可以了,这里I2C总线需要接10K上拉没有画出来,这个需要注意一下。 …

鸿蒙实战开发:【分布式软总线组件】

简介 现实中多设备间通信方式多种多样(WIFI、蓝牙等),不同的通信方式使用差异大,导致通信问题多;同时还面临设备间通信链路的融合共享和冲突无法处理等挑战。分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路…

邮件自动化:简化Workplace中的操作

电子邮件在职场中的使用对于企业和组织的日常活动起着重要的作用。电子邮件不再仅仅是一种通信方式,已经成为现代企业和组织实施日常运营的关键要素。 除了通信,电子邮件对于需求生成、流程工作流、交易审批以及各种其他与业务相关的活动至关重要。在当…

【C++设计模式】策略模式

文章目录 前言一、策略模式是什么?二、策略模式的实现原理三、UML图四、代码实现总结 前言 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。通过将每个算法封装到具有共同接口的独立类中,客户端可以在不改变自身代码的情况下选择…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)

相对布局组件,用于复杂场景中元素对齐的布局。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 规则说明 容器内子组件区分水平方向,垂直方向: 水平方向为left&…

ThingsBoard Edge 设备连接

文章目录 一、创建设备1.创建设备配置2.创建设备 二、上传遥测1.MQTTX 工具2.上传遥测 三、属性1.属性类型2.上传客户端属性3.下载共享属性4.订阅共享数据 四、设备告警1.配置告警规则2.清除报警规则3.测试3.1.设备告警3.1.清除告警 五、规则链1.规则管理2.Edge 查看规则链 Thi…

腾讯云对象存储的在Java使用步骤介绍

腾讯云对象存储的在Java使用步骤介绍 创建一个腾讯云的账户 这个自己去创建,然后开通对象存储服务,如下 有了账号就要创建一个对象存储的桶,也就是存储对象的一个容器 如果你想只有自己放存放的就设置 私有读写 ,如果想用网络直…

SpringCloud Stream 消息驱动

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第九篇,即介绍 Stream 消息驱动。 二、消息驱动概念 2.1 消息驱动是什么 官方定义 Spring …

提升用户体验,Xinstall智能判定拉起技术来袭

在移动互联网时代,App推广已经成为各大企业的必争之地。然而,随着市场竞争的加剧,如何提升App的转化效率和用户体验成为了推广者们亟待解决的问题。这时,Xinstall的智能判定拉起技术应运而生,为推广者们带来了新的解决…

Go-知识select

Go-知识select 1. select 的特性1.1 chan读写1.2 返回值1.3 default 2. select 经典使用2.1 永久阻塞2.2 快速检错2.3 限时等待 3. 实现原理3.1 数据结构3.2 实现逻辑3.3 原理总结 4. 总结4.1 大概原理4.2 参数4.3 返回值 一个小活动: https://developer.aliyun.com…

element el-table 表格限制多选个数

本次的功能的要求是: 原本的引入的elment 的表格,去除全选框,版本对比的按钮,需要在选择版本,并且版本个数为2的时候,可点击,进行版本对比操作每次选择版本的时候,目前已有两个选择…

【C语言】—— 指针二 : 初识指针(下)

【C语言】——函数栈帧 一、 c o n s t const const 修饰指针1.1、 c o n s t const const 修饰变量1.2、 c o n s t const const 修饰指针 二、野指针2.1野指针的成因(1)指针未初始化(2)指针越界访问(3)指…

Hardness of Scheme-Switching and Comparison in FHE

参考文献: [AP13] Alperin-Sheriffff, J., Peikert, C.: Practical bootstrapping in quasilinear time. In: Canetti, R., Garay, J.A. (eds.) CRYPTO 2013. LNCS, vol. 8042, pp. 1–20. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-40041-…

微服务初识

1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打…

Qt4 设计师自定义控件----写好qmake文件,无需额外拷贝

前言 浏览了很多帖子,看了很多博主的教程,每一个都写的很好,美中不足的是。Qt在每次自定义插件时都需要拷贝,如果能够利用qmake install拷贝功能就很完美了,在其他人使用的时候只要简单的几个步骤就能轻松的用起来&am…

点餐平台网站|基于springboot框架+ Mysql+Java+Tomcat的点餐平台网站设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能实现 系统功能设计 数据库E-R图设计 lunwen参…

R语言数据挖掘-关联规则挖掘(1)

一、分析目的和数据集描述 要分析的数据是美国一区域的保险费支出的历史数据。保险费用数据表的每列分别为年龄、性别、体重指数、孩子数量、是否吸烟、所在区域、保险收费。 本文的主要目的是分析在年龄、性别、体重指数、孩子数量、是否吸烟、所在区域中这些因素中&#xf…

【PTA】L1-039 古风排版(C++)

题目链接:L1-039 古风排版 - 团体程序设计天梯赛-练习集 (pintia.cn) 目录: 目录: 题目要求: 输入格式: 输出格式: 输入样例: 输出样例: 思路: 代码: 测试结…