使用外部 jar 在 debian 10 命令行中运行 java 程序

     2023-03-17     45

关键词:

【中文标题】使用外部 jar 在 debian 10 命令行中运行 java 程序【英文标题】:run java program in debian 10 command line with external jar 【发布时间】:2021-11-10 06:20:33 【问题描述】:

我在下面的程序中使用 postgresql-42.2.23.jar。我已经在 intelij ide 的 windows 环境中测试了代码,它工作正常。但我想在 linux 机器上运行它(它运行 debian 10)使用命令行。现在postgresql-42.2.23.jar文件和java类文件在Music文件夹中。

当我编译程序时 “chathu@giottestserver:~/Music$ javac -cp Music/postgresql-42.2.23.jar serverinsert.java” 命令,它编译并创建类文件。

但是当我运行它时 “chathu@giottestserver:~/Music$ java -cp .:Music/postgresql-42.2.23.jar:serverinsert” 它给出以下消息enter image description here

我也尝试过使用以下命令。但没有输出。 " chathu@giottestserver:~/Music$ java -cp .:Music/postgresql-42.2.23.jar serverinsert"

谁能帮我解决这个问题?

import java.sql.*;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class serverinsert 
    public static void main(String []V)
        Connection c = null;
        Statement stmt = null;
        try
        
            //Connecting to the database in local machine

            Class.forName("org.postgresql.Driver");
            c = DriverManager
                    .getConnection("jdbc:postgresql://localhost/",
                            "postgres", "gflow123");
            System.out.println("Opened database successfully");

            //Creation of a table to insert data in the local machine

            stmt = c.createStatement();
            String sql = "CREATE TABLE jason " +
                    "(ID INT      NOT NULL," +
                    " sendata json NOT NULL)";
            stmt.executeUpdate(sql); //updates the table
            System.out.println("Table created successfully");

            //Opening connection for DLC client

            ServerSocket ss = new ServerSocket(4000);
            Socket s = ss.accept();
            StringBuilder sb = new StringBuilder();
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            String line;

            // DataOutputStream Dout = new DataOutputStream(s.getOutputStream());
            // BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            //String MsgIn="",MsgOut="";

            // inserting the DLC Data into a string variable called content
            String content="";
            while((line = br.readLine()) != null)
                sb.append(line).append(System.lineSeparator());
                content = sb.toString();

            


            //Removing the http header content from the DLC Data

            String jsn=content.substring(content.indexOf(""));

            //DLC received data processing
            System.out.println(jsn);
            String jsonreplacd=jsn.replace("[\"name","\"name");
            System.out.println(jsonreplacd);
            String jsonreplacd1=jsonreplacd.replace("\"name","[\"INSERT INTO jason (ID,sendata) \" + \"VALUES ('1','')");
            System.out.println(jsonreplacd1);
            String jsonreplacd2=jsonreplacd1.replace("')\":\"press\",\"datatype\":\"float\",\"content\":","");
            System.out.println(jsonreplacd2);
            String jsn2=jsonreplacd2.substring(jsonreplacd2.indexOf("["));
            System.out.println(jsn2);
            String jsn3=jsn2.replace("[","");
            System.out.println(jsn3);
            String jsn4=jsn3.replace("\"t\"","\\\"t\\\"");
            System.out.println(jsn4);
            String jsn5=jsn4.replace("\"v\"","\\\"v\\\"");
            System.out.println(jsn5);
            String jsn6=jsn5.replace(":",":\\\"");
            System.out.println(jsn6);
            String jsn7=jsn6.replace(",\\","\\\",\\");
            System.out.println(jsn7);
            String jsn8=jsn7.replace(",","\\\",");
            System.out.println(jsn8);
            String jsn9=jsn8.replace("]]","\\\"')\"");
            System.out.println(jsn9);
            String jsn10=jsn9.replace("[","");
            System.out.println(jsn10);
            String jsn11=jsn10.replace(",","')\",\"INSERT INTO jason (ID,sendata) \" + \"VALUES ('1','");
            System.out.println(jsn11);
            String jsn12=jsn11.replace("\",\"","\"@\"");
            System.out.println(jsn12);
           // String jsn3=jsn2.replace("\"","\\\"");
           //
           //
          //  String jsn6=jsn5.replace(",","\\\",");
          //  String jsn7=jsn6.
          //
           // String jsn9=jsn8.replace("\\\"","");

           // System.out.println(jsn9);

            // Creation of string array type to execute sql command

            //String[] strArray = new String[] jsn11;
            //System.out.println(strArray[0]);

//String hi="hi";
            //String[] data = "INSERT INTO jason (ID,sendata) " + "VALUES ('1','\"t\":\"2104492460\",\"v\":\"-0.000769\"')";
            String[] data = jsn12.split("@");
            for(int i=0;i<5;i++) 
                //stmt.executeUpdate(data[i]);
                System.out.println(data[i]);
         





            s.close();
        

        catch(Exception e)

        

    

【问题讨论】:

【参考方案1】:

您正在尝试运行具有 postgresql-42.2.23.jar 依赖项的应用程序。

"javac -cp Music/postgresql-42.2.23.jar serverinsert.java" - 有效,因为语法正确 "java -cp .:Music/postgresql-42.2.23.jar:serverinsert" - 不起作用,因为 serverinsert 不是 .jar 文件 (see also this) "java -cp .:Music/postgresql-42.2.23.jar serverinsert" - 通常它应该可以工作,但您没有发布您的“serverinsert”代码。相反,我们有“writedbtst”,我相信这是您的入口点(方法 main),您应该运行它而不是“serverinsert”。如果它不是公开的,您可以将其保存为“serverinsert.java”。

总而言之,如果它在您的 IDE 中工作,请尝试使用命令行在同一平台上运行它并相应地替换主类。请关注java class naming conventtion。

【讨论】:

是的,它应该是 serverinsert insead of writedbtst。粘贴代码时出错。仍然是同样的问题。

使用 sbt 原生打包将 fat jar 打包成 debian

】使用sbt原生打包将fatjar打包成debian【英文标题】:Packagefatjarintoadebianusingsbtnativepackaging【发布时间】:2018-10-2505:07:38【问题描述】:在运行“sbtdebian:packageBin”命令时,fakeroot程序失败,因为它试图在/target目录而不是/target/scala-... 查看详情

IBM MobileFirst:在命令行构建期间使用外部 jar 文件

】IBMMobileFirst:在命令行构建期间使用外部jar文件【英文标题】:IBMMobileFirst:usingexternaljarfilesduringcommandlinebuild【发布时间】:2015-01-2314:50:26【问题描述】:我们正在尝试使用org.JSON.JSONObject库在适配器端进行一些密集的json处理。... 查看详情

使用外部 jar 命令通过命令行向主类发送参数

】使用外部jar命令通过命令行向主类发送参数【英文标题】:sendargumenttomainclassbycommandlinewithexternaljarcommand【发布时间】:2017-11-2015:38:55【问题描述】:我在命令行linux中使用这样的外部jar运行java应用程序:java-cp".:commons-net-3.6.jar... 查看详情

springboot--外部配置的属性使用

SpringBoot允许使用propertities文件、yaml文件或者命令行参数作为外部配置。命令行参数配置SpringBoot可以基于jar包运行,打成jar包的程序可以直接通过下面的命令运行:java-jarxx.jar可以通以下命令修改Tomcat端口号:java-jarxx.jar--server.po... 查看详情

java示例代码_从jar文件在linux命令行中执行yum安装

java示例代码_从jar文件在linux命令行中执行yum安装 查看详情

java在命令行中编译和运行java

.../details/50792353同时加载编译多个jar包和java文件在个人平常使用或者当我们把代码部署到Linux服务器上的时候,我们经常需要通过命令行编译和运行Java文件,网上关于这个的方法大多是通过javac-cpfilePath/jarName.jar  javaName.java这种... 查看详情

带有外部 .jar 的 Java 命令行

...external.jar【发布时间】:2011-08-2912:11:28【问题描述】:我使用.jar开发一个项目以重用代码。所以我有一个名为TOOLS.jar的.jar,我在文件HelloWorld.java中开发了一个简单的应用程序,它从TOOLS.jar引用我的包TOOLS我用这个命令行编译:ja... 查看详情

无法在 Maven 中添加和使用外部 jar

】无法在Maven中添加和使用外部jar【英文标题】:Unabletoaddanduseexternaljarstomaven【发布时间】:2021-11-0504:08:21【问题描述】:我需要在我的maven项目中添加第三方jar。在我的本地,我使用命令mvninstall:install-file-DlocalRepositoryPath=/home/sa... 查看详情

在 Windows 命令行中使用管道

】在Windows命令行中使用管道【英文标题】:UsingpipeinWindowsCommandline【发布时间】:2013-10-0108:49:04【问题描述】:我正在尝试将一个字符串通过管道传输到另一个命令中。下面的sn-p显示了一个不起作用的示例:它只启动Telnet,但... 查看详情

Java - 带有自己的参数和自己的参数的命令行中的jar [重复]

...:我找不到简单的解决方案来解决我的Java问题。我必须使用带参数的命令行运行JAR文件。我知道如何像下面那样做,而且工作正常:java-jar文件名.jar参数1参数2等等 查看详情

在命令行中使用 curl 通过 JSON 对象发布数据

】在命令行中使用curl通过JSON对象发布数据【英文标题】:PostingdataviaJSONobjectusingcurlinthecommandline【发布时间】:2019-10-2115:59:57【问题描述】:我正在尝试通过命令行将数据从一台服务器发布到另一台服务器。最终,我将使用真实... 查看详情

使用 Makefile 编译失败但在命令行中成功

】使用Makefile编译失败但在命令行中成功【英文标题】:compilationwithMakefilefailbutsuccessincommandline【发布时间】:2015-01-2216:58:10【问题描述】:我使用Makefile编译我的项目并成功编译,但是当我将新库(libbcm2835.a)添加到链接器(-lbcm2835... 查看详情

Windows 10 上的 Spark。'Files\Spark\bin\..\jars""\' 未被识别为内部或外部命令

】Windows10上的Spark。\\\'Files\\\\Spark\\\\bin\\\\..\\\\jars""\\\\\\\'未被识别为内部或外部命令【英文标题】:SparkonWindows10.\'Files\\Spark\\bin\\..\\jars""\\\'isnotrecognizedasaninternalorexternalcommandWindows10上的Spark。\ 查看详情

Eclipse:如何使用外部 jar 构建可执行 jar?

】Eclipse:如何使用外部jar构建可执行jar?【英文标题】:Eclipse:Howtobuildanexecutablejarwithexternaljar?【发布时间】:2010-10-0421:58:24【问题描述】:我正在尝试构建一个依赖于下载的外部jar的可执行jar程序。在我的项目中,我将它们包... 查看详情

无法在 Windows 上使用 jar 命令

】无法在Windows上使用jar命令【英文标题】:Cannotusejarcommandonwindows【发布时间】:2011-06-0315:41:04【问题描述】:jar命令在我的盒子上不起作用。我已经下载了jdk,并将envar“路径”设置为包含jdk\\bin目录的路径。但是,我仍然收到... 查看详情

如何在命令行中使用选项创建 android 模拟器?

】如何在命令行中使用选项创建android模拟器?【英文标题】:howtocreateandroidemulatorincommandlinewithoptions?【发布时间】:2012-10-0212:36:40【问题描述】:我想用一些选项在命令行中创建模拟器,比如hw.mainKeys=false。我需要它是一个shell... 查看详情

在命令行中正确链接库

...为我没有足够的声誉来发布两个以上的链接。我正在尝试使用MinGW和命令行使用WindowsAPI在C++中制作一些简单的GUI 查看详情

在命令行中使用 WbExport 时缺少数据和 sql 脚本文件

】在命令行中使用WbExport时缺少数据和sql脚本文件【英文标题】:DataandsqlscriptfilesaremissingwhileusingWbExportincommandline【发布时间】:2019-10-3010:01:19【问题描述】:我在从命令行运行包含WbExport(使用Select语句)的sql脚本时遇到一个问... 查看详情