如何从终端使用jar和txt文件编译和运行Java

如何从终端使用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类中,如

我有一个项目,它有以下结构

若我从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类中,如下所示:

 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>的操作