我有一个项目,其结构如下
如果我从IDE运行它一切正常,但我无法从终端运行它。
编译我尝试从Task_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类中,如下所示:
String fs = System.getProperty("file.separator");
FileWriter fw = new FileWriter("src"+ fs + "out.txt");
我尝试将路径更改为'./out.txt',它在终端中编译,但随后它将nothings写入文件out.txt。我在编译时尝试运行时,在线程“main”java.lang.NoClassDefFoundError:org / jsoup / Jsoup 中出现错误异常... 我真的卡住了,我会感激任何帮助!
答案 0 :(得分:1)
您的主类和txt文件位于同一文件夹中,因此请勿将路径指定为JTextArea
。
答案 1 :(得分:1)
因为您的代码硬编码从src目录中读取out.txt并且您在src目录中运行了代码,显然它无法在src /目录下找到另一个src / out.txt。
所以不要进入src目录,留在Task_3目录中试试这个:
java -cp src/:lib/jsoup-1.11.3.jar Main
答案 2 :(得分:0)
你做错了。我真的建议使用Maven这样的东西。我知道这可能太多了,但值得。 Maven绝对是一个标准,它使一切变得更加容易。 :)
人民币项目并选择添加框架支持...
然后从列表中选择 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>
(只需复制并粘贴)
记得!您需要将YOUR MAIN CLASS
更改为您的main(String[] args)
方法所在的正确主类!这允许Maven创建一个清单文件(允许你从终端打开jar)
看看有多容易,没有下载,只需粘贴:
<dependencies>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
等待!请务必点击右下角的Enable auto-import
!这将允许Maven自动下载您的依赖项。
将您的out.txt
文件放入resources
文件夹,将.java
文件放入src/main/java/
文件夹,然后就可以了!
现在您可以使用
获取您的信息流ClassLoader loader = YourClass.class.getClassLoader();
InputStream inputStream = loader.getResourceAsStream("out.txt");
请记住,您不应该写入该文件,只能阅读。如果你想写,那么你应该在别处创建该文件。
要构建你的jar,只需打开Maven Tools
,如下所示:
然后点击install
命令:
等一下,准备好使用的jar文件应该在根项目的/target/
文件夹中。
如果您有任何疑问,请询问他们!我将帮助您使用Maven。 ;)