如何从终端使用jar和txt文件编译和运行Java
我有一个项目,它有以下结构 若我从IDE运行它,一切都正常,但我不能从终端运行它 为了编译,我尝试了任务3如何从终端使用jar和txt文件编译和运行Java,java,jar,terminal,compiler-errors,Java,Jar,Terminal,Compiler Errors,我有一个项目,它有以下结构 若我从IDE运行它,一切都正常,但我不能从终端运行它 为了编译,我尝试了任务3 javac -cp lib/*.jar src/*.java 它能工作,但我不能让它运行 如果我尝试 cd src java -cp .:jsoup-1.11.3.jar Main 它在线程“main”java.io.FileNotFoundException:src/out.txt(没有这样的文件或目录)中给我一个错误异常 我的带有此txt.out的代码位于Writer类中,如
javac -cp lib/*.jar src/*.java
它能工作,但我不能让它运行
如果我尝试
cd src
java -cp .:jsoup-1.11.3.jar Main
它在线程“main”java.io.FileNotFoundException:src/out.txt(没有这样的文件或目录)中给我一个错误异常
我的带有此txt.out的代码位于Writer类中,如下所示:
String fs = System.getProperty("file.separator");
FileWriter fw = new FileWriter("src"+ fs + "out.txt");
我试图将路径更改为“./out.txt”,它在终端中编译,但随后它不向文件out.txt写入任何内容。另外,当我试图在编译后运行时,我在线程“main”java.lang.NoClassDefFoundError:org/jsoup/jsoup中得到错误异常。。。
我真的卡住了,我将感谢任何帮助 您的主类和txt文件位于同一文件夹中,因此不要将路径指定为
“src”+fs+“out.txt”
您的主类和txt文件位于同一文件夹中,因此不要将路径指定为“src”+fs+“out.txt”
您做错了。我真的建议用Maven来做这样的事情。我知道这可能太多了,但这是值得的。Maven绝对是一个标准,它让一切变得更容易
1.使你的项目多样化
在您的项目上使用RMB,然后选择添加框架支持…
然后从列表中选择Maven,然后应用
现在您有了一个新的pom.xml
文件。输入它。
相应地更改artifactId
和groupId
下一步应用适当的插件:
<build>
<plugins>
<!-- That allows you to shade your libraries to your jar !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- That plugin compiles your jar with Java 8 !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- That plugin adds a manifest and makes your jar file !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass> YOUR MAIN CLASS </mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<!-- This allow Maven to filter your resources folder! !-->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
等等!记得点击右下角的启用自动导入
!这将允许Maven自动下载您的依赖项
3.添加您的文件
把你的out.txt
文件放入resources
文件夹,把你的.java
文件放入src/main/java/
文件夹,你就准备好了
现在您可以使用
ClassLoader loader = YourClass.class.getClassLoader();
InputStream inputStream = loader.getResourceAsStream("out.txt");
请记住,您不应该对该文件进行写入,而应该进行读取。如果要写入,则应在其他位置创建该文件
4.建筑
要构建jar,只需打开Maven工具
,如下所示:
然后点击它的install
命令:
稍等一下,准备使用的jar文件应该位于根项目的/target/
文件夹中
如果你有任何问题,问他们!我将帮助您使用Maven 你做错了。我真的建议用Maven来做这样的事情。我知道这可能太多了,但这是值得的。Maven绝对是一个标准,它让一切变得更容易 1.使你的项目多样化 在您的项目上使用RMB,然后选择添加框架支持… 然后从列表中选择Maven,然后应用 现在您有了一个新的
pom.xml
文件。输入它。
相应地更改artifactId
和groupId
下一步应用适当的插件:
<build>
<plugins>
<!-- That allows you to shade your libraries to your jar !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- That plugin compiles your jar with Java 8 !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- That plugin adds a manifest and makes your jar file !-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass> YOUR MAIN CLASS </mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<!-- This allow Maven to filter your resources folder! !-->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
等等!记得点击右下角的启用自动导入
!这将允许Maven自动下载您的依赖项
3.添加您的文件
把你的out.txt
文件放入resources
文件夹,把你的.java
文件放入src/main/java/
文件夹,你就准备好了
现在您可以使用
ClassLoader loader = YourClass.class.getClassLoader();
InputStream inputStream = loader.getResourceAsStream("out.txt");
请记住,您不应该对该文件进行写入,而应该进行读取。如果要写入,则应在其他位置创建该文件
4.建筑
要构建jar,只需打开Maven工具
,如下所示:
然后点击它的install
命令:
稍等一下,准备使用的jar文件应该位于根项目的/target/
文件夹中
如果你有任何问题,问他们!我将帮助您使用Maven 因为您的代码硬编码为从src目录中读取out.txt,并且您在src目录中运行了代码,所以它显然无法在src/目录下找到另一个src/out.txt 因此,不要进入src目录,留在Task_3目录中并尝试以下操作:
java -cp src/:lib/jsoup-1.11.3.jar Main
因为您的代码硬编码为从src目录中读取out.txt,并且您在src目录中运行了代码,所以很明显,它无法在src/目录下找到另一个src/out.txt 因此,不要进入src目录,留在Task_3目录中并尝试以下操作:
java -cp src/:lib/jsoup-1.11.3.jar Main
为什么在
src
文件夹中有.class
和.txt
文件?如果您是从src
文件夹中运行,那么该文件就是out.txt
,而不是src/out.txt
。您可以从上面的文件夹运行它,但需要相应地更改类路径。@DawoodibnKareem我将txt文件移动到src级别的单独目录中(我现在将更新我的问题和图像)。我试图从文件夹Task_3运行命令java-cp:jsoup-1.11.3.jar Main,但它说找不到或加载Main类Main,如果try src/Main也没有帮助…将src
放在类路径中,如果这就是Main.class
所在的位置。为什么src
文件夹中有.class
和.txt
文件?好吧,如果从src
文件夹中运行,那么该文件就是out.txt
,而不是src/out.txt
。您可以从上面的文件夹运行它,但需要相应地更改类路径。@DawoodibnKareem我将txt文件移动到src级别的单独目录中(我现在将更新我的问题和图像)。我试图从文件夹Task_3运行命令java-cp:jsoup-1.11.3.jar Main,但它说找不到或加载Main类Main,如果try src/Main也没有帮助……将src
放在类路径中,如果那里是Main.class
所在的位置。另外,使用Maven,您不需要执行类似java-cp src/:lib/jsoup>的操作