首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序可以在Eclipse中运行,但是当我导出到runnable JAR时,它就不行了。FileNotFoundException

问题描述:程序可以在Eclipse中运行,但是当我导出到runnable JAR时,它就不行了。出现了FileNotFoundException错误。

答案: 这个问题通常是由于文件路径问题导致的。在Eclipse中运行程序时,文件路径是相对于项目根目录的,因此可以正常访问到文件。但是当将程序导出为可运行的JAR文件时,文件路径会发生变化,导致无法找到文件,进而抛出FileNotFoundException错误。

解决这个问题的方法有两种:

  1. 使用相对路径:在程序中使用相对路径来访问文件,而不是绝对路径。相对路径是相对于JAR文件所在的目录的路径。可以使用Java的File类的相对路径方法来构建文件路径。例如,如果文件位于JAR文件的同一目录下的data文件夹中,可以使用相对路径"./data/文件名"来访问文件。
  2. 将文件打包到JAR文件中:将需要访问的文件打包到JAR文件中,这样在运行JAR文件时就可以直接访问到文件了。在Eclipse中,可以通过将文件放置在src目录下或者使用build path的方式将文件包含在JAR文件中。然后在程序中使用类似于ClassLoader.getResourceAsStream()的方法来获取文件的输入流进行读取。

总结: 当程序在Eclipse中运行正常,但在导出为JAR文件后出现FileNotFoundException错误时,通常是由于文件路径问题导致的。可以通过使用相对路径或将文件打包到JAR文件中来解决这个问题。

腾讯云相关产品推荐: 腾讯云对象存储(COS):腾讯云对象存储(COS)是一种海量、安全、低成本、高可靠的云存储服务,适用于各类网站、开发企业和个人开发者。它提供了简单易用的API接口,可以方便地在程序中进行文件的上传、下载和管理操作。了解更多信息,请访问:腾讯云对象存储(COS)产品介绍

腾讯云函数计算(SCF):腾讯云函数计算(SCF)是一种事件驱动的无服务器计算服务,可以帮助开发者在云端运行代码,无需关心服务器的管理和维护。通过SCF,可以将程序打包成函数,并在需要时自动触发执行,实现按需计算。了解更多信息,请访问:腾讯云函数计算(SCF)产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java|打jar包,exe,脱离jdk配置运行

1 前言 平时大家可能会学习到一些有关Java程序或小游戏的制作,但平时都是在eclipse或者在idea的工具里书写,并且通过run的方式来进行运行与检测,那当我们写好内容后,如何将其有趣的内容分享给自己的好朋友一起快乐的玩耍呢...,下面就会为大家讲述到如何将写好的文件导成一个可运行的jar包,然后又怎样得到可以脱离配置jdk去运行的exe。...2 打jar包 下面将以eclipse为例讲述打jar包的过程: (1)首先右键点击项目,找到export,点击。 ? 图2.1 (2)选择Java->Runnable…,再点击next。 ?...图 2.7 3 结合jar包完成exe 前面已经打好了可运行jar包,下面就开始打exe: (1)除了jar包,还需要找到自己项目所使用的jdk安装位置,如图3.1,复制jre文件夹,和jar放到同一个文件夹里...图 3.7 4 展示 最后图4.1就是我们需要的文件,这样这个文件夹打包压缩就可以分享给小伙伴直接运行了。 ? 图4.1 双击exe,就可以打开运行了。 ?

3.7K20

学会 IDEA 这 30 个神技,撸码效率直接起飞

关闭代码检查 与eclipse类似,idea也可以自己关闭代码检查 减少资源使用,但不推荐全部关闭,(是大佬当我没说),把我们项目中不会使用到的关闭就好了 6....+f)搜索,肉眼找的… 14.代码模板(代码快捷键) 例如 : eclipse 中的syso是打印控制台输出 ,但是idea默认是sout , 如果非要改成syso 可以在Postfix Completion...包来源时 非常好用 有的时候 可能莫名其妙看不到这个图标 ,我们可以点一下设置 把这个勾上,它就能显示了,等显示后,再把这个勾去掉 24....快捷键切换回上一个点击开的tab 当我们打开了多个tab的时候 , 想要快速回到上一个点击的tab中 有的时候肉眼很难找 我们可以用快捷键 alt + ← 键 (eclipse版快捷键 idea默认快捷键需要自测...我们可以通过线程名,分析当前是哪个线程执行的,在多线程环境下对代码运行分析起到辅助作用。

64810
  • 从初识Maven到使用Maven进行依赖管理和项目构建

    ,我们web项目再也不用导jar包了,我们只需要在Maven的主配置文件中添加相应jar包的标识(标识:公司或者组织名+项目名+版本号)就好了。...---- (三)在eclipse中创建Maven项目 和我们通常创建项目一样,我们可以在File→new→ ? 填写工作组,项目名,就可以完成创建Maven项目了。...---- (五)在eclipse中配置Maven 我们之前在eclipse中创建了项目,那个使用eclipse中自带的Maven插件,我们想要用自己安装的Maven,需要在eclipse中配置: ?...尤其值得注意的是provided,这个就像servlet-api那样,我们编译测试都需要这个jar包,但是当上传到服务器的时候就不再需要了(Tomcat的lib下有),如果这里我们默认compile,那么当程序在服务器上运行的时候将出现...---- (九)使用Maven运行web项目 在eclipse中,我们是直接打开Tomcat,并将项目添加到Tomcat上,Maven也可以直接启动Tomcat而不需要借助Eclipse,具体的步骤:

    1.4K70

    IDEA 28 个操作技巧

    ,都是ctrl+h(idea默认 ctrl+shift+f)搜索,肉眼找的… 14.代码模板(代码快捷键) 例如 : eclipse 中的syso是打印控制台输出 ,但是idea默认是sout , 如果非要改成...syso 可以在Postfix Completion里面设置,类似的 fori等都是在里面设置 15.自动导包、自动移除没用的包 15.1 手动导包 :alt+enter 手动移除未使用包: crtl+...和鼠标滑轮 可以放大,这个在排除依赖冲突 查看jar包来源时 非常好用 有的时候 可能莫名其妙看不到这个图标 ,我们可以点一下设置 把这个勾上,它就能显示了,等显示后,再把这个勾去掉 24.快捷键切换回上一个点开的...tab 当我们打开了多个tab的时候 , 想要快速回到上一个点击的tab中 有的时候肉眼很难找 我们可以用快捷键 alt + ← 键 (eclipse版快捷键 idea默认快捷键需要自测) ,有的时候我们在后面...我们可以通过线程名,分析当前是哪个线程执行的,在多线程环境下对代码运行分析起到辅助作用。

    13910

    梳理Java IO流,攻破NIO的堡垒!【技术创作101训练营】

    I: input,O:output 这里的主体说的都是程序(即内存),从外部设备中读取数据到程序中 即为输入流,从程序中写出到外部程序中即为输出流 [d5b82347160c4698ab5518056a268d35...字节流 一切皆为字节 一切文件数据(文本、图片、视频等)在存储时,都是以二进制的形式保存,都可以通过使用字节流传输。...name) throws FileNotFoundException{}; 当传入的文件不存在时,运行时会抛出FileNotFoundException异常 read()方法读取 File file...,缓冲流是处理流的一种实现,增强了节点流的性能,为了提高效率,缓冲流类在初始化对象的时候,内部有一个缓冲数组,一次性从底层流中读取数据到数组中,程序中执行read()或者read(byte[])的时候,...但是可以通过思维导图的方式整理出来,方便记忆。

    61830

    Maven打包部署

    Maven打Jar包 问题一 Eclipse突然SB告诉我类不存在还让我导包进来O__O "…,但是我明明有这个类。...因此你可以先clean一下再编译。这个时候eclipse会将所有的以前编译信息清除然后编译。...eclipse --->project ----->clean...选项将工程中的.class文件删除,同时重新编译工程,类似于jbuild中的rebuild。...见下图Clean结束之后会自动进行Build 问题二 找不到主类或无法加载主类的问题 是因为.java文件不在项目的src路径内,也就是说源代码未被eclipse编译,字节码不存在无法运行了,在项目名上右键...目录下本身就是空的所以不用clean直接mvn package即可 然后在targe目录下找到刚才打好的jar包 java -jar messagepush1-0.0.1-SNAPSHOT.jar 成功启动

    55820

    CompletableFuture调用OpenFegin,谁用谁傻

    问题原因在搜索后github上的issues看到了此问题本地环境可以,但是Linux环境不行但使用线程池后即可解决此问题,两个方法区别如下,如果不指定线程池则使用系统级别的 /** * Returns...问题结论当使用boot build 打包的镜像在docker环境运行时,使用CompletableFuture的runAsync()调用会出现此问题,或者当标记@Async异步时也会出现,但是jdk8中是好的...,jdk11会出现此问题,原因是Fegin接口是懒加载的,只有在我们第一次使用该Fegin接口的时候才会对Fegin接口进行初始化,但是如果在ForkJoinWorkerThread中使用Fegin接口的话...,既然是ClassNotfound,必然是ClassLoader相关引起的,随后在修复方案中也验证了,此时的classLoader在默认线程中TCCL是找不到Spring管理的加载器的,为null时应在...这个解释其实并不是很形象,或者很明确,因为恰好是符合这个场景,并且不是直接解决,而是排查解决的,虽然但是,觉得并不是很好的回答,细节太少,等在往期补充。

    1.1K20

    idea配置使用

    与eclipse不同的是,eclipse使用的是工作目录列表的形式管理项目,可以在eclipse相应的工作空间中展示多个不同 的项目,idea使用项目驱动的形式,在创建项目时只针对于当前项目位置进行创建...完成安装 二、 IDEA的配置 1.首次运行配置 1) 设置是否导入之前的配置 如果是升级安装,可以导入之前的配置.如果是首次安装,直接选择第三个选项. 2) 设置授权 根据自己的实际情况选择授权方式...,不够方便, 因此我们要按照图中所示更改为NONE 10) 设置自动导包 当我们复制代码时,IDEA不会自动导入对应类的包,需要手动导包,这样不够方便, 因此我们要按照图中所示进行更改 11) 设置背景...不同 eclipse是为所有的项目配置,所有的项目都可以直接使用,但是idea需要为每个项目配置tomcat 点击右上的add configuration 添加tomcat环境 点击左上角+号 下拉选择...自动导入 选择创建的lib文件夹 导入方式选择jar 文件夹 4)将配置好的web项目配置到tomcat中运行 再次点击tomcat的配置 添加当前项目设置项目请求url 5)将tomcat环境加入当前项目

    14210

    Maven项目缺少Maven Dependencies解决方法总结

    一、今天搭建了一个maven项目,在pom.xml文件引入依赖后,发现项目结构中没有Maven Dependencies文件(下图),但是在java Build Path中又可以找到Maven Dependencies...文件(如下图): 但是,pom.xml文件中添加的依赖jar包也不会自动下载到项目中,update Project也是一样,于是是网上查找了很多方法,尝试后都发现没有用,最终,查看自己的pom.xml...在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。...同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies...只有当外层的dependencies元素中没有指明版本信息时,dependencyManagement 中的 dependencies 元素才起作用。

    3.6K20

    linux nohup.out文件过大解决方法

    Linux的三种重定向 0: 表示标准输入 1: 标准输出,在一般使用时默认的是标准输出 2: 标准错误信息输出,可以用来指定需要重定向的标准输入或输出 在一般使用时,默认的是标准输出,即1.当我们需要特殊用途时...例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。 另外,也可以实现0,1,2之间的重定向。...Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。...注意:如果直接使用rm -rf nohup.out删除,目录中没有这个文件了,但是磁盘空间还是没有减少。这是因为我们的项目正在使用中,就像我们熟悉的Windos系统打开一个文件你是无法删除的。 4....每个项目都是有log的,启动日志就不需要看,直接指定到黑洞目录,在本地也不会保留。 nohup java -jar test.jar > /dev/null 2>&1 &

    5.6K10

    大数据必学Java基础(三十):IDEA的使用介绍

    该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。...当一组程序员使用同一个开发环境时,就建立了统一的工作标准,当IDE提供预设的模板,或者不同团队分享代码库时,这一效果就更加明显了。管理开发工作。...首先,IDE提供文档工具,可以自动输入开发者评论,或者迫使开发者在不同区域编写评论。其次,IDE可以展示资源,更便于发现应用所处位置,无需在文件系统里面艰难的搜索。 ❀缺点学习曲线问题。...【2】配置:八、Module的概念和使用 【1】在Eclipse中我们有Workspace (工作空间)和Project (工程)的概念,在IDEA中只有Project (工程)和Module (模块)...to a module in IntelliJ IDEA翻译:Eclipse中 workspace 相当于 IDEA中的ProjectEclipse中 Project 相当于 IDEA中的

    1.2K61

    spark-submit --files

    模式下(-- deploy-mode cluster ),-- files必须使用全局可视的地址(比如hdfs),否则driver将无法找到文件,出现FileNotFoundException。...这是因为driver会在集群中任意一台worker节点上运行,使用本地地址无法找到文件。...FileNotFoundException异常出现在SparkSession的getOrCreate()初始化方法中,因为此方法会调用addFile(),但是确找不到文件,导致SparkSession初始化失败...注意:–jars原理相同,但是getOrCreate()中调用addJars出现异常,但是并不会导SparkSession初始化失败,程序会继续运行。   ...值得一提的是,在cluster模式下,spark-submit   --deploy-mode cluster   path-to-jar,其中path-to-jar也必须是全局可视路径,否则会发生找不到

    69520

    windows 安装 storm 及 eclipse 调试 TopN 实例

    project案例中word coun程序,用的是python写的multi-lang bolt,使用python 2.7.11,安装路径在: C:\Python27\ 三:安装并运行ZooKeeper...注意1: 源码一定要用这个版本,否则启动会报各种错误,而这些错误和 jdk、python、zookeeper、eclipse 版本都无关。...JAVA_HOME已经在安装JDK时手动配置了环境变量,而Python好像是默认自动就会配置好环境变量的, 我的Python目录下没有Scripts文件夹,暂时这样配置就可以了,不影响下面的使用。...部署这个jar在本地: > storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology...七:eclipse 调试 TopN 实例 storm 求 csdn 密码库中密码出现的 topN,并直接在 eclipse 中调试运行: package com.bj.test.top10; /**

    69150

    Ubuntu 14.04下Hadoop Eclipse 环境配置教程

    org.eclipse.update.reconcile=false配置,改成true后重新进入eclipse  3.在Project Explorer中就可以看到DFS Locations了,如果可以向下点开几个文件夹...Hadoop Eclipse 插件编译安装1.2.0 http://www.linuxidc.com/Linux/2013-07/87428.htm Hadoop在Eclipse中的插件编译 http...-10/91666.htm  ------------------运行Java程序-------------------- 1.配置输入输出到路径 在程序中右击--Run As--Run Configurations...2.导入hadoop中到jar包,右击项目--Properties--左边选Java Build Path--右边选Libraries--右边点击Add External JARs......在hadoop/lib/ 这个路径中选需要到jar包,如果不知道选哪个,那就全选!~(无奈) 3.在程序中右击--Run As--Run on hadoop 运行程序

    55210

    内存泄漏该如何解决?

    三、内存泄漏 我们都知道,java和c++的最大区别是前者会自动收回不再使用的内存,后者需要程序员手动释放。在c++中,如果我们忘记释放内存就会发生内存泄漏。...-Xms20m -Xmx20m -XX:+PrintGC,把可用内存调小一点,并且在发生gc时输出信息,运行结果如下 ......但是上面的程序对象都是定义在方法内的,属于局部变量,局部变量在方法运行结果后,所引用的对象在gc时应该被回收啊,但是这里明显没有。...为了找出到底是哪些对象没能被回收,我们加上运行参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.bin,意思是发生OOM时把堆内存信息dump...运行程序直至异常,于是得到heap.dump文件,然后我们借助eclipse的MAT插件来分析,如果没有安装需要先安装。 然后File->Open Heap Dump...

    99140

    开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?

    ,并输出到本地文件中。...graphics2d.dispose(); 第四步,将绘制好的图像输出到文件中。...安装成功后,就可以使用可视化工具设计界面了,如下图所示: ? 09、将项目打成 jar 包发行 在将应用程序进行打包时,使用者都希望开发者只提供一个单独的文件,而不是包含大量源码的文件夹。...jar 包存在的目的正源于此。 将项目打成 jar 包也很简单,在 Eclipse 中,可依次右键项目→Export→Runnable JAR file。你将会看到以下界面。 ?...在指定的目录下可找到生成的 jar 包文件。 ? 10、运行 jar 包,填写必要信息后生成海报 如果电脑上安装了 Java 的运行环境,双击该 jar 包文件就可以运行。运行后的界面,如下图所示。

    73730

    一个ScheduledExecutorService启动的Java线程无故挂掉引发的思考

    于是,去找老大问一下问题怎么解决,老大说去生产数据库上导十万数据到测试库,然后在本地debug一下。接着,我就从数据库里面导出一万数据开始测试,在eclipse启动进程,日志写在本地文件。...到这里,看似问题已经解决了,但是问题并没有那么简单。 寻根问底 上面说到的在线程中抛出了NullPointerException异常,解决方法是增加一个判断是否为空的条件就可以了。...但是一般来说,有异常的时候,程序没有捕获异常,日志里或者debug时控制台会打印异常信息,类似这种: at com.netease.backend.rds.task.CleanHandleThread.run...也就是说,如果使用者抛出异常,ScheduledExecutorService 将会停止线程的运行,而且不会报错,没有任何提示信息。 这就是在日志中和控制台都没有看到打印异常信息的原因。...>获取线程运行结果。 写的bug多,自然经验就多了,但是要注意总结。 完 2018年12月13日09:08:19

    79910
    领券