Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 20

0
votes
answers
6 views
+10

的Java的Eclipse:運行程序與文件參數和外部JAR

0

我試圖運行下面的腳本:https://algs4.cs.princeton.edu/15uf/UF.java的Java的Eclipse:運行程序與文件參數和外部JAR

要做到這一點,我有:

1)打開Eclipse中,提出了一個新的項目命名爲UF,並創建了一個名爲UF的新類,並在該類的內部粘貼了上述鏈接中的代碼。

2)通過在其網站上的說明,我

/usr/local/algs4/algs4.jar 

3)用鼠標右鍵單擊該項目,赴屬性下保存自己的JAR文件和庫選項卡下有兩個選項字段ModulePath進行和Classpath。使用Modulepath突出顯示,我單擊添加外部JAR並導航到algs4.jar的位置。然後我對Classpath也做了同樣的事情,因爲我認爲其中一個必須是正確的。

4)該文件是用於輸入到程序:https://algs4.cs.princeton.edu/15uf/tinyUF.txt

所以我保存這個~/Documents下。

5)在Run選項下,我選擇Run Configurations,單擊Arguments選項卡,然後鍵入/home/me/Documents/tinyUF.txt

6)現在,當我運行程序時什麼都沒有發生,我的意思是它絕對沒有顯示運行的唯一例外,當我將鼠標移到運行按鈕上時它說「運行(已經運行)」 。

7)所以僅僅爲了測試的目的,我在主函數System.out.println("TEST");的第一行插入,這一次當我運行它時,它顯示Eclipse底部的控制檯並打印TEST。 8)如果我將System.out.println("TEST");行向下移動一行,以便int n = StdIn.readInt();先運行,那麼控制檯將顯示但沒有打印,程序也不會停止。

有關發生了什麼的任何想法?

[編輯:我想我應該注意到我在Linux Mint 18.3 Cinnamon上運行Oxygen.2 Release(4.7.2)。當我按照指示安裝Eclipse時,他們似乎有點奇怪,但我仍然依照他們:它指示我將文件夾/root/eclipse安裝到該文件夾??,所以我做到了。]

[更新:與評論者,我發現我不得不將輸入文件路徑添加到啓動配置中。現在我已經這樣做了,程序正確地讀入txt文件並輸出正確的結果,除了它從不打印最後一行並永不終止程序。看代碼:

public static void main(String[] args) { 
     int n = StdIn.readInt(); 
     UF uf = new UF(n); 
     while (!StdIn.isEmpty()) { 
      int p = StdIn.readInt(); 
      int q = StdIn.readInt(); 
      if (uf.connected(p, q)) continue; 
      uf.union(p, q); 
      StdOut.println(p + " " + q); 
     } 
     StdOut.println(uf.count() + " components"); 
    } 

當代碼運行時的行爲是,它成功完成while循環,但從未達到行StdOut.print]ln(uf.count() + " components");

+0

你在調試器下運行你的代碼了嗎?如果在程序等待時從鍵盤輸入一些數字,會發生什麼? –

+0

@ PM77-1我猜「調試器」意味着在運行去調試。我試了一下,控制檯顯示它正在運行,但它永遠不會終止。如果我運行它並輸入1它打印測試,然後我輸入2,它打印B(我也插入'System.out.println(「B」);'只是在while循環內,忘記提及),然後如果我輸入4它引發異常,因爲大概我輸入了程序無法理解的數字。所以我認爲這裏的答案是它沒有正確讀取輸入文本文件。 – Addem

+0

按照[本教程](https://www.eclipse.org/community/eclipse_newsletter/2017/june/article1.php)設置*斷點*並按照進一步的步驟進行調試。 –

沙发
0
0

默認情況下,eclipse根目錄是項目的基礎目錄。因此,如果您在此處以調試模式運行,則您的參數需要包含絕對路徑(以驅動器號開頭),例如C:/usr/local/algs4/algs4.jar,或者您需要將文件放在運行程序的同一文件夾中。

只是給/home/me/Documents/tinyUF.txt告訴程序從那裏它是目前,尋找主目錄,我的目錄下鑽..等

它總是更直接,更安全給的絕對路徑。如果路徑將變化/動態,則允許jar接受參數。檢查main()中的參數並將其設置爲File inputFile = arg[0]變量,然後以此方式處理該文件。

+0

我想你可能會假設我正在使用Windows計算機。我正在運行Linux Mint,如果我理解正確,'/ home/...'實際上會提供根目錄中的絕對路徑。 – Addem

+0

我從來沒有聽說過將jar導出爲runnable,但可能沒有必要,因爲在與評論者的對話中,我取得了一些進展。事實證明,要將文件作爲輸入傳遞給程序,必須提供啓動配置的路徑。這樣做後,程序幾乎可以工作,它讀入文件並輸出許多正確的信息。但是,當它退出while循環時,它永遠不會運行while循環之後的代碼。 – Addem

+0

很高興你能夠取得一些進展。對於早期退出問題,您是否想要濃縮並共享該部分代碼? –

0
votes
answers
6 views
+10

爲什麼java.lang.NoSuchMethodError出現非常特定於環境或類加載器?

0

我目前正在開發一個項目,其中包含log4j-over-slf4j.jar文件。在所有的環境中,這個罐子都在工作。但突然間我有一臺WebSphere應用程序服務器。 我們的產品在tomcat服務器上工作,突然之間,我們的應用程序無法創建任何日誌,而在另一個環境中創建它。如果我嘗試從項目中刪除該jar,那麼我可以生成日誌。爲什麼java.lang.NoSuchMethodError出現非常特定於環境或類加載器?

但我無法確定爲什麼我應該只爲特定的環境做這件事。

或者我應該怎麼做才能在服務器運行時識別類加載器信息以確定哪個類被加載或哪個方法被加載?

我的JDK版本是: 「1.7.0_71」

我的應用程序中包含這些庫:

antlr-2.7.7.jar 
aopalliance-1.0.jar 
asm-1.5.3.jar 
asm-attrs-1.5.3.jar 
axiom-api-1.2.12.jar 
axiom-impl-1.2.12.jar 
axis2-1.6.2.jar 
axis2-kernel-1.6.1.jar 
axis2-transport-http-1.6.1.jar 
axis2-transport-local-1.6.1.jar 
c3p0-0.9.2.1.jar 
cglib-2.1_3.jar 
com.ibm.jbatch-tck-spi-1.0.jar 
commons-codec-1.6.jar 
commons-collections-3.1.jar 
commons-fileupload-1.2.jar 
commons-httpclient-3.1.jar 
commons-logging-1.1.3.jar 
dom4j-1.6.1.jar 
ehcache-1.2.3.jar 
geronimo-activation_1.1_spec-1.0.2.jar 
geronimo-javamail_1.4_spec-1.6.jar 
geronimo-jta_1.1_spec-1.1.jar 
geronimo-stax-api_1.0_spec-1.0.1.jar 
geronimo-ws-metadata_2.0_spec-1.1.2.jar 
hibernate-3.2.4.ga.jar 
hibernate-annotations-3.3.0.ga.jar 
hibernate-commons-annotations-3.1.0.GA.jar 
hibernate-core-3.3.0.CR2.jar 
hibernate-ehcache-3.3.0.CR2.jar 
hibernate-entitymanager-3.3.1.ga.jar 
hibernate-jpa-2.0-api-1.0.0.Final.jar 
hibernate-validator-3.1.0.CR2.jar 
httpcore-4.0.jar 
javaetmoi-spring4-vfs2-support-1.4.0.jar 
javassist-3.18.1-GA.jar 
javassist-3.3.GA.jar 
javax.batch-api-1.0.jar 
javax.servlet-api-3.0.1.jar 
jaxen-1.1.1.jar 
jboss-common-core-2.0.4.GA.jar 
jboss-logging-3.3.0.Final.jar 
jettison-1.2.jar 
jsr311-api-1.0.jar 
jta-1.1.jar 
log4j-1.2.17.jar 
log4j-api-2.0.jar 
logkit-1.0.1.jar 
mchange-commons-java-0.2.3.4.jar 
neethi-3.0.1.jar 
oracle-ojdbc6-11.2.0.3.0.jar 
persistence-api-1.0.jar 
poi-3.9.jar 
slf4j-api-1.7.11.jar 
slf4j-simple-1.6.4.jar 
spring-aop-3.2.13.RELEASE.jar 
spring-batch-core-3.0.1.RELEASE.jar 
spring-batch-infrastructure-3.0.1.RELEASE.jar 
spring-beans-3.2.13.RELEASE.jar 
spring-context-3.2.13.RELEASE.jar 
spring-core-3.2.13.RELEASE.jar 
spring-expression-3.2.13.RELEASE.jar 
spring-jdbc-3.2.13.RELEASE.jar 
spring-orm-3.2.13.RELEASE.jar 
spring-retry-1.0.3.RELEASE.jar 
spring-tx-3.2.13.RELEASE.jar 
spring-web-4.0.3.RELEASE.jar 
stax-api-1.0.1.jar 
woden-api-1.0M9.jar 
woden-impl-commons-1.0M9.jar 
woden-impl-dom-1.0M9.jar 
wsdl4j-1.6.2.jar 
wstx-asl-3.2.9.jar 
xmlbeans-2.5.0.jar 
xmlpull-1.1.3.1.jar 
XmlSchema-1.4.7.jar 
xpp3_min-1.1.4c.jar 
xstream-1.4.7.jar 

我的Tomcat的lib目錄包含:

annotations-api.jar 
catalina-ant.jar 
catalina-ha.jar 
catalina.jar 
catalina-storeconfig.jar 
catalina-tribes.jar 
ecj-4.5.jar 
el-api.jar 
jasper-el.jar 
jasper.jar 
jsp-api.jar 
ojdbc6-11.2.0.3.jar 
servlet-api.jar 
sqljdbc4-11.1.0.7.0.jar 
tomcat-api.jar 
tomcat-coyote.jar 
tomcat-dbcp.jar 
tomcat-i18n-es.jar 
tomcat-i18n-fr.jar 
tomcat-i18n-ja.jar 
tomcat-jdbc.jar 
tomcat-jni.jar 
tomcat-juli.jar 
tomcat-util.jar 
tomcat-util-scan.jar 
tomcat-websocket.jar 
websocket-api.jar 
沙发
0
0

不能確定準確的環境,但我幾乎可以肯定你會得到一些類庫的意外版本。如果在從Tomcat切換到WebSphere(或其他方式)之後發生問題,他們可能有不同版本的與slf4相關的東西(或其中一個庫有另一個缺失的庫)。大多數情況下,java的-verbose:class選項應該可用於挖掘從何處獲得類的內容

板凳
0
0

當您的代碼使用不同於您的環境提供的代碼版本進行編譯時,會出現此類錯誤。

public class A{ 
public void a(){ 
} 
} 

//newer version of module 
public class AVariant{ 
public void a(String b){ 
} 
} 

我沒那麼熟悉WebSphere,但這裏的問題是,WebSphere使用日誌框架的舊/更新或版本,這是不兼容你編譯應用程序的版本。您需要解決此依賴性衝突。

本指南可以幫助你:當你的應用程序試圖調用一個方法在早期版本的類,這是不可用的類的較新版本的情況 https://www.slf4j.org/legacy.html

+0

感謝您的回答,我們知道NoSuchMethodError如何發生,但我的問題是爲什麼我們必須刪除該jar。 – 5A9U

地板
0
0

NoSuchMethod錯誤。基本上這可能是由於升級/降級或進入新環境時版本衝突造成的。

的深入描述在這裏。

Docker Image of Jersey Web Application

檢查應用程序庫VS服務器提供的庫不會是在這裏使用。重要的是JVM類加載器在運行時加載的庫/類。

分析哪些是通過java.class.path系統屬性加載的類https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

System.getProperty("java.class.path"); 

然後將它們與你的Tomcat版本提供的罐子進行比較。

+0

類路徑中沒有任何變化。它仍然是一樣的。我們在默認情況下在tomcat的classpath中使用了bootstrap.jar和tomcat-juli.jar。 – 5A9U

+0

你能發佈錯誤日誌嗎? –

0
votes
answers
6 views
+10

無法從終端運行ghci

1

我正在嘗試爲項目的Haskell分配運行ghci。然而,它給了我此錯誤消息:無法從終端運行ghci

/usr/local/haskell/ghc-8.2.1-x86_64/lib/ghc-8.2.1/bin/ghc: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory 

我試圖讓使用LN象徵libtinfo.so.5,但它仍然無法正常工作。進入 '定位libtinfo.so.5' 給了我下面的:

/usr/lib/libtinfo.so.5 

/usr/local/haskell/ghc-8.2.1-x86_64/lib/libtinfo.so.5 

我跑Manjaro Linux操作系統。

+3

嘗試'LD_LIBRARY_PATH =的/ usr /本地/哈斯克爾/ GHC-8.2.1-x86_64的/ lib目錄GHC --interactive' –

+0

可悲的是回報相同的錯誤信息。 – jortseljongen

+0

您可能會嘗試使用strace來查看確切搜索哪些目錄以查看鏈接器是否在正確的位置檢查 –

沙发
0
0

運行以下命令:

$ sudo pacman-key --refresh-keys 
$ gpg --keyserver pgp.mit.edu --recv-keys C52048C0C0748FEE227D47A2702353E0F7E48EDB 
$ yaourt -S ncurses5-compat-libs 

然後嘗試運行GHCI

0
votes
answers
5 views
+10

Java - 命令行中的jar與自己的參數和自己的參數

-2

我無法找到簡單的解決方案來解決我在Java中的問題。我必須使用帶參數的命令行來運行JAR文件。Java - 命令行中的jar與自己的參數和自己的參數

我知道如何做到這一點像的下方,它的正常工作:

Java的罐子filename.jar參數1參數2等 例如:Java的罐子file.jar 50 10

但是,我應該怎麼做,我希望使用一些參數? 例如: java -jar文件-width 50 -height 10

這可能嗎?

[編輯] 我無法使用外部庫。

任何類似的答案對初學者來說都不是那麼容易,其中一些對我來說不起作用。我不是那麼愚蠢的先打開票,我一直在尋找答案兩天。但是,如果您仍然認爲這是重複的,請刪除此主題中的所有帖子:/。

+0

有庫,幫助您與此有關。 – Koekje

+0

什麼庫? – mehow

沙发
0
2

您可以使用Apache Common CLI

// create Options object 
Options options = new Options(); 
// add t option 
options.addOption("t", false, "display current time"); 
CommandLineParser parser = new DefaultParser(); 
CommandLine cmd = parser.parse(options, args); 
if(cmd.hasOption("t")) { 
    // print the date and time 
} else { 
    // print the date 
} 
+0

要使用它,我必須添加這個庫,有沒有更簡單的方法來做到這一點? – mehow

+0

如果您不想添加庫,則可以編寫自己的解析算法。正如你所說,你已經能夠在之前使用程序參數:「我知道如何做到這一點,並且它工作正常:java -jar filename.jar argument1 argument2 etc」對於你的新需求argument1 =「-width」, argument2 =「50」等。爲避免使用第三方庫,您可以編寫自己的解析來計算如何關聯名稱和值,但是爲什麼在已爲您免費提供的情況下重新創建邏輯? –

0
votes
answers
5 views
+10

如何重命名使用gradle工作區插件生成的包

-1

好吧,我想重命名由我的構建生成的包,以指定其名稱中的版本,但我所做的一切似乎都被忽略,並且包最終與項目文件夾名稱每次。如何重命名使用gradle工作區插件生成的包

的build.gradle文件

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    // https://mvnrepository.com/artifact/org.osgi/org.osgi.core 
    compile group: 'org.osgi', name: 'org.osgi.core', version: '6.0.0' 
} 

task copyJar(type: Copy) { 
    from('generated') 
    include('*.jar') 
    into("$rootDir/build/lib/bundles") 
} 

build.finalizedBy(copyJar) 

gradle.properties

bundle_name=helloworld 
bundle_version=5.1.2 

從我個人理解,jar任務使用基本名稱和版本屬性,與其他屬性一起命名的罐子,如果沒有已經指定,所以我嘗試build.gradle文件,但它不工作,我不斷得到一個jar文件的項目文件夾的名稱

jar.baseName = "$bundle_name" 
jar.version = "$bundle_version" 

也即時通訊使用BND工作區插件,並且我認爲它覆蓋的方式jar任務的作品,但林不知道

這裏的build.gradle

//Applying the Gradle BND Plugin for Workspace Builds 
    //https://github.com/bndtools/bnd/blob/master/biz.aQute.bnd.gradle/README.md 
buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath "biz.aQute.bnd:biz.aQute.bnd.gradle:${bnd_version}" 
    } 
} 
apply plugin: 'biz.aQute.bnd.workspace' 
apply plugin: 'java' 

    // Repositorios, aguante Maven Central. 
/* 
repositories { 
    mavenCentral() 
} 
*/ 

clean { 
    delete ("$rootDir/build/libs/bundles") 
} 

感謝你的父項目閱讀

沙发
0
1

如果您使用的是Bnd工作區插件,那麼您必須通過項目的bnd.bnd文件控制Bnd。請參閱-outputmask指令以控制輸出名稱。

+0

工程就像一個魅力,現在我明白了。非常感謝您的先生 –

+0

我可以問一個跟進問題嗎?現在它工作,我得到了所需名稱的jar文件,但gradle現在生成兩個jar文件,一個是我在bnd.bnd文件中設置的名稱,另一個是previus通用名稱的jar,我可以在哪裏禁用創建更新的jar文件? –

0
votes
answers
5 views
+10

如何將jar庫添加到lib和lib/ext目錄下的Wildfly服務器?

0

我想盡量減少我的myapp.ear文件以將某些庫移動到服務器wildfly 10,但我發現的簡單方法是通過包含在standalone.xml部署中,如下面的示例。如何將jar庫添加到lib和lib/ext目錄下的Wildfly服務器?

<deployments> 
    <deployment name="mysql-connector-java-5.0.8-bin.jar" runtime-name="mysql-connector-java-5.0.8-bin.jar"> 
     <content sha1="7b9bfb6c4e4885660378a9c13330915c321f6cca"/> 
    </deployment> 
</deployments> 

,我可以使用圖書館的Maven作爲例子

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
</dependency> 

有沒有一種簡單的方法來添加和加載圖書館../lib或../lib/ext?

+0

您可以創建'靜態'模塊並依賴它們。 – ehsavoie

+0

這會怎樣?你有一個例子嗎? – Joe

+0

爲你的驅動創建一個module.xml文件: <依賴性> <模塊名稱= 「javax.api」/> <模塊名稱= 「javax.transaction.api」/> <模塊名稱= 「javax.servlet.api」 可選= 「真」/ > ehsavoie

沙发
0
0

要定義wildfly 10一個新的模塊,我們可以在其他使用jboss-cli.sh。

創建模塊依賴

../wildflly/bin$ ./jboss-cli 
[[email protected]:9990 /] module add 
--name=org.mysql 
--resources=<path-res>/mysql-connector-java-5.1.45-bin.jar 
--dependencies=javax.api,javax.transaction.api 

我用作<路徑解析度> ../standalone/lib

創建數據源驅動

[[email protected]:9990 /]/subsystem=datasources/jdbc-driver= 
mysql:add(driver-module-name=org.mysql, 
driver-name=mysql, 
driver-class-name=com.mysql.jdbc.Driver) 

創建數據庫源(例如機智h默認mysql端口)

[[email protected]:9990 /] /subsystem=datasources/data-source= 
MySQLDS:add(jndi-name=java:jboss/datasources/MySQLDS, 
driver-name=mysql, 
connection-url=jdbc:mysql://localhost:3306/schema, 
user-name=root, 
password=pass) 
板凳
0
0

您的驅動程序創建一個像他的一個module.xml文件:

<module xmlns="urn:jboss:module:1.5" name="com.mysql"> 
    <resources> 
     <resource-root path="mysql-connector-java-5.0.8-bin.jar"/> 
    </resources> 
    <dependencies> 
     <module name="javax.api"/> 
     <module name="javax.transaction.api"/> 
    </dependencies> 

執行: 。

/jboss-cli.sh -c --command="module add --module-xml=<path-to-file>/module.xml --resources=<path-to-file>/mysql-connector-java-5.0.8-bin.jar" 
0
votes
answers
4 views
+10

可執行jar無法正常啓動

0

我使用eclipse indigo創建了一個可執行的jar文件,但是當我雙擊它時沒有任何反應。但是當我將java -jar c:/dir/filename.jar寫入cmd時,它工作正常。其他罐子運行良好。我使用jdk 1.7.0_02和eclipse indigo。我怎麼能正常啓動它?可執行jar無法正常啓動

+0

你是如何創建可執行jar? – havexz 2012-01-09 05:41:53

沙发
0
1

您可以通過雙擊運行jar,只需確保Java與.jar文件相關聯。最簡單的方法是通過重新安裝JRE(通常爲您執行此操作)。

否則,你將需要修改一些您的Windows屬性(我不知道你正在運行的Windows版本),以文件指向的.jar到的javaw.exe的實例。

Here's a link到Windows 7頁面上如何做到這一點。

板凳
0
0

右鍵單擊.jar文件並轉到屬性,然後將「open with」程序設置爲「Java SE Binary」。

地板
0
0

您可以通過將.jar擴展名與命令相關聯來通過javaw.exe運行它。

"C:Program FilesJava{java version}injavaw.exe" -jar "%1" %* 
0
votes
answers
4 views
+10

Jxmaps 30天試用.jar

-3

我正在用JxMaps做一個大學的項目,我需要將我的java項目轉換成.jar,但我不知道,如果應用程序可以在其他電腦上使用此許可證。 在我的主要電腦中,jar工作正常。Jxmaps 30天試用.jar

我嘗試在我的其他電腦上運行jar,雖然許可證在該範圍內,但無法正常播放。我用cmd來查看發生了什麼,但我沒有發現任何錯誤,而且都是正確的。

我需要這樣做,因爲我必須以jar格式將我的應用程序發送給我的老師。

那麼,有人知道我能做什麼?

謝謝

+2

對不起,我們不知道你在說什麼。你可能應該問JxMaps支持而不是這裏。 –

沙发
0
0

license.jar沒有任何綁定的某個PC。因此,在試用期到期之前,它將在每臺PC上有效。

0
votes
answers
3 views
+10

如何從另一個程序啓動JAR文件?

1

我遇到了一個我正在做的遊戲的問題,事情是,我希望它能夠更新 而不必去網站下載新版本,並且您需要登錄(它將花費大約$ 3)玩。事情是,我希望這個jar不能運行,除非你通過遊戲啓動器運行它。我希望它能夠檢查更新並使用登錄會話。如何從另一個程序啓動JAR文件?

我也希望能夠在構建遊戲的同時調試遊戲,然後設置jar以便在無需啓動啓動器和日誌記錄的情況下運行它,然後單擊按鈕啓動它,但我不知道的是如何執行你是這樣做的,遊戲jar只能從啓動器和啓動器開始,將登錄會話發送到jar,以便知道用戶名並知道遊戲未被盜用?

沙发
0
4

一個快速簡便的方法(但可能不是最好的一個):

你可以簡單地保存數據庫或加密的文件上的會話數據。當啓動程序退出時,它也應該銷燬數據庫中的會話

當jar文件運行時,它將從數據庫中讀取數據,如果它沒有在數據庫中找到活動會話,則中止數據庫。

您還可以防止從程序外部運行jar(即使啓動程序已經在後臺運行),通過使其接收某種必須滿足某些條件的隨機加密密鑰(也是數據庫可以在這裏使用)。然後用戶必須知道密鑰才能夠手動啓動它

板凳
0
2

您可以使用ProcessBuilder並啓動新的JVM。

事情是這樣的,也許:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar"); 
pb.directory(new File("preferred/working/directory")); 
Process p = pb.start(); 

希望它可以幫助

0
votes
answers
3 views
+10

無效的文件(壞的幻數):當我執行JAR文件時,如何解決這個問題不能使用這個Java代碼?

0

IM triying運行這段代碼中使用事件執行一個jar文件,但沒有工作無效的文件(壞的幻數):當我執行JAR文件時,如何解決這個問題不能使用這個Java代碼?

我怎麼能解決

IM triying運行這段代碼中使用事件執行一個jar文件,但沒有作品

我怎麼能解決

JButton cn= new JButton("push me3"); 
    cn.setBounds(0,0,295,20); 
    f.add(cn); 
    cn.addActionListener(new ActionListener(){ 

    @Override 
    public void actionPerformed(ActionEvent e)  { 
    String title =hellopanelx40.getText(); 
    try{ 

    //All your IO Operations 

    Process proc = Runtime.getRuntime().exec("/home/example.jar"); 
    proc.waitFor(); 
    // Then retreive the process output 
    InputStream in = proc.getInputStream(); 
    InputStream err = proc.getErrorStream(); 

    byte b[]=new byte[in.available()]; 
    in.read(b,0,b.length); 
    System.out.println(new String(b)); 

    byte c[]=new byte[err.available()]; 
    err.read(c,0,c.length); 
    System.out.println(new String(c)); 

    }catch(Throwable t){ 
    t.printStackTrace(); 
     } 
    } 
    }); 

請幫我

+0

我已經低估了這個問題,因爲你在這裏發佈了代碼而沒有指定它有什麼問題。我們期望看到你期望的代碼做什麼,爲什麼你期望它做到這一點,它實際上在做什麼(在適當的情況下有完整的錯誤消息和堆棧跟蹤)以及它爲什麼是錯誤的。請[編輯]您的問題以包含此信息,然後我會考慮收回我的downvote。 –

+0

嗨對不起,我的問題是,當我在終端工程中執行一個jar文件;但是當我執行使用java不起作用。 – user8903285

+0

請[編輯]你的問題,包括確切的命令,沒有確切的命令,以及你得到的確切錯誤(完整的堆棧跟蹤)。 –

沙发
0
0

在執行exec(),嘗試改變「JAV一個-jar /home/example.jar「

+0

是的工作我沒有看到這個錯誤 – user8903285

+0

非常謝謝你。 – user8903285