真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼打版啟動 java已啟動但返回退出代碼怎么辦

java如何用代碼實現(xiàn)開機自動啟動程序

開機自啟動

我們提供的服務有:網(wǎng)站制作、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、禹州ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的禹州網(wǎng)站制作公司

2個方式

1 是修改注冊表

2 是復制到啟動里

方法2 是拷貝文件即可

方法1 Runtime.getRuntime().exec 執(zhí)行去修改注冊表

String regKey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

String myAppName = "zzzApp";

String exePath = "C:\\sss\\zzz.exe";//開機啟動程序本地目錄

Runtime.getRuntime().exec("reg "+(isStartAtLogon?"add ":"delete ")+regKey+" /v "+myAppName+(isStartAtLogon?" /t reg_sz /d "+exePath:" /f"));

用java如何實現(xiàn)程序自動啟動

你的意思好像是說這個程序需要一天24小時不間斷執(zhí)行的,呵呵!

可以這樣解決:

首先,把你啟動程序的命令編輯到一個bat

批處理文件

中;

然后,你的java類里面需要的核心代碼是:

Runtime.getRuntime().exec("cmd.exe

/c

start

C:\\clean.bat(這個文件改成你做好的批處理文件)");

當然,你的程序中需要判斷現(xiàn)在是不是晚上六點,這個就不多說了。

if(晚上6點){

執(zhí)行上面的代碼;

}

如何實現(xiàn)JAVA程序根據(jù)用戶的配置開機啟動

看了樓上的發(fā)言,你有資格說別人傻嗎?看清楚樓主的問題好不好!樓主的意思是直接在java程序中配置實現(xiàn),而不是像你那么傻的手動去實現(xiàn)!

轉載兩篇文章,結合起來可以實現(xiàn)java應用程序開機自動啟動

可能也有別的好方法,這只是其中的一種

思路就是將java應用程序打包成.jar文件,然后轉成.exe,通過修改注冊表來增加刪除啟動項,即將安裝后的.exe執(zhí)行文件添加到注冊表中;

首先將java應用程序打包成.jar文件,可以利用如下代碼找到.jar文件的絕對路徑,即也可以找到安裝后的.exe執(zhí)行文件

轉載:

對于Java程序,無論是未打包的還是打包的JAR或WAR文件,有時候都需要獲取它運行所在目錄信息,如何做到這一點呢?

在Java處理的文件系統(tǒng)中,目錄的表示方式有兩種:

(1)絕對目錄,它以"/"為起始字符,代表從根目錄下開始尋找給出的目錄,如/c:/java

(2)相對路徑,它以不帶“/”的目錄名表示,表示以當前Java程序正在運行的目錄作為起始目錄來尋找給出的目錄。如java/classes。在相對路徑中,有一些特定的字符,可以代表特的的目錄,比如,“.”代表當前目錄,“..”代表當前目錄的上一級目錄。在網(wǎng)上很多給出的例子中,就是利用"."作為目錄名,構造File對象的實例,然后通過File對象的方法來獲取當前程序運行的目錄。

這種方法雖然簡單,但有時不能正確的得出當前程序的運行目錄。原因在于,運行Java程序不一定要進入到該程序的類文件或JAR文件所在的目錄,只要在運行時指定了正確的類路徑信息,就可以在任何目錄中運行Java程序,此時利用這種方法只能得到發(fā)出運行命令時所在的目錄信息。

從上面的分析可以看出,對于很多Java程序,尤其是WEB程序,利用當前路徑的“.”表示法,都不能滿足要求。那么怎樣才能正確的得到運行目錄信息呢?

在Web程序中,利用Servlet API可以獲得一些路徑信息,比如HttpServletRequest接口中定義的getRealPath方法,但類似這些方法都依賴于Servlet環(huán)境,不便于程序的單元測試。

本文提供了一種只使用Java標準API的路徑探測方法,就是利用ClassLoader抽象類。

利用java.lang.Class的getClassLoader方法,可以獲得給定類的ClassLoader實例,它的getResource方法可以獲得當前類裝載器中的資源的位置,我們可以利用類文件的名稱作為要查找的資源,經(jīng)過處理后就可獲得當前Java程序的運行位置信息,其偽代碼如下:

獲得Class參數(shù)的所在的類名

取得該類所在的包名

將包名轉換為路徑

利用getResource得到當前的類文件所在URL

利用URL解析出當前Java程序所在的路徑

具體代碼如下:

java代碼:

Java代碼

/**-----------------------------------------------------------------------

*getAppPath需要一個當前程序使用的Java類的class屬性參數(shù),它可以返回打包過的

*Java可執(zhí)行文件(jar,war)所處的系統(tǒng)目錄名或非打包Java程序所處的目錄

*@param cls為Class類型

*@return 返回值為該類所在的Java程序運行的目錄

-------------------------------------------------------------------------*/

public static String getAppPath(Class cls){

//檢查用戶傳入的參數(shù)是否為空

if(cls==null)

throw new java.lang.IllegalArgumentException("參數(shù)不能為空!");

ClassLoader loader=cls.getClassLoader();

//獲得類的全名,包括包名

String clsName=cls.getName()+".class";

//獲得傳入?yún)?shù)所在的包

Package pack=cls.getPackage();

String path="";

//如果不是匿名包,將包名轉化為路徑

if(pack!=null){

String packName=pack.getName();

//此處簡單判定是否是Java基礎類庫,防止用戶傳入JDK內(nèi)置的類庫

if(packName.startsWith("java.")||packName.startsWith("javax."))

throw new java.lang.IllegalArgumentException("不要傳送系統(tǒng)類!");

//在類的名稱中,去掉包名的部分,獲得類的文件名

clsName=clsName.substring(packName.length()+1);

//判定包名是否是簡單包名,如果是,則直接將包名轉換為路徑,

if(packName.indexOf(".")0) path=packName+"/";

else{//否則按照包名的組成部分,將包名轉換為路徑

int start=0,end=0;

end=packName.indexOf(".");

while(end!=-1){

path=path+packName.substring(start,end)+"/";

start=end+1;

end=packName.indexOf(".",start);

}

path=path+packName.substring(start)+"/";

}

}

//調(diào)用ClassLoader的getResource方法,傳入包含路徑信息的類文件名

java.net.URL url =loader.getResource(path+clsName);

//從URL對象中獲取路徑信息

String realPath=url.getPath();

//去掉路徑信息中的協(xié)議名"file:"

int pos=realPath.indexOf("file:");

if(pos-1) realPath=realPath.substring(pos+5);

//去掉路徑信息最后包含類文件信息的部分,得到類所在的路徑

pos=realPath.indexOf(path+clsName);

realPath=realPath.substring(0,pos-1);

//如果類文件被打包到JAR等文件中時,去掉對應的JAR等打包文件名

if(realPath.endsWith("!"))

realPath=realPath.substring(0,realPath.lastIndexOf("/"));

/*------------------------------------------------------------

ClassLoader的getResource方法使用了utf-8對路徑信息進行了編碼,當路徑

中存在中文和空格時,他會對這些字符進行轉換,這樣,得到的往往不是我們想要

的真實路徑,在此,調(diào)用了URLDecoder的decode方法進行解碼,以便得到原始的

中文及空格路徑

-------------------------------------------------------------*/

try{

realPath=java.net.URLDecoder.decode(realPath,"utf-8");

}catch(Exception e){throw new RuntimeException(e);}

return realPath;

}//getAppPath定義結束

//-----------------------------------------------------------------

該方法既可以用于JAR或WAR文件,也可以用于非JAR文件。但要注意以下2點:

不要傳遞系統(tǒng)的類,作為getAppPath的參數(shù),如java.lang.String.class,當然,也不要傳遞那些已經(jīng)位于JDK中的那些類,比如xml相關的一些類等等。

要傳遞應該是程序中主要的運行類,不要傳遞程序中的支持類庫中的類文件,也就是那些第三方的類庫中的類文件,否則得到的將是那些類庫的位置。

然后可以通過修改注冊表來增加開機啟動項:

轉載:

需要修改的注冊表項

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] 開機自動運行程序

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce] 開機自動運行程序 且 僅運行一次

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices] 開機自動運行服務

JDK 從1.4開始提供操作 Windows 的 API 是 Preferences,因為這個 API 也是跨平臺的,所功能比較弱,在 Win32 下只能用來操作 HKCU\Software\JavaSoft 和 HKLM\Software\JavaSoft 下及子節(jié)點的數(shù)據(jù)。

自由訪問注冊表其他鍵的值光用 Java 是做不到的,必然方案就是 JNI,這里我使用的是Windows Registry API Native Interface 下的 registry-3.1.3.zip(包含源代碼)??梢岳盟L問、修改、導出注冊表項到文件等。解開 registry-3.1.3.zip,在 bin 目錄中可以看到兩個文件 ICE_JNIRegistry.dll 和 registry.jar,動態(tài)庫就是本地代碼實現(xiàn)。

com.ice.jni.registry.Registry.main() 就是 registry 的示例代碼,動態(tài)庫 ICE_JNIRegistry.dll 也是在這個類的靜態(tài)塊中被加載的,記得要把 ICE_JNIRegistry.dll 放在它能夠被加載的位置上,比如你把 registry-3.1.3.zip 解壓到 c:\registry-3.1.3,在命令行下你可以進入到這個目錄中,并執(zhí)行。

代碼:

Java代碼

package org.zh.ss.util;

import com.ice.jni.registry.*;

import java.text.SimpleDateFormat;

/** *//**

* java 操作注冊表

* @author 李志遠

*/

public class RegeditTool {

static SimpleDateFormat shortDateFormat = new SimpleDateFormat("yyyy-MM-dd");

/** *//** */

/** *//** Creates a new instance of test */

// 把信息存儲到注冊表HKEY_LOCAL_MACHINE下的某個節(jié)點的某一變量中,有則修改,無則創(chuàng)建

public static boolean setValue(String folder, String subKeyNode,

String subKeyName, String subKeyValue) {

try {

RegistryKey software = Registry.HKEY_LOCAL_MACHINE

.openSubKey(folder);

RegistryKey subKey = software.createSubKey(subKeyNode, "");

subKey

.setValue(new RegStringValue(subKey, subKeyName,

subKeyValue));

subKey.closeKey();

return true;

} catch (NoSuchKeyException e) {

e.printStackTrace();

} catch (NoSuchValueException e) {

e.printStackTrace();

} catch (RegistryException e) {

e.printStackTrace();

}

return false;

}

// 刪除注冊表中某節(jié)點下的某個變量

public static boolean deleteValue(String folder, String subKeyNode,

String subKeyName) {

try {

RegistryKey software = Registry.HKEY_LOCAL_MACHINE

.openSubKey(folder);

RegistryKey subKey = software.createSubKey(subKeyNode, "");

subKey.deleteValue(subKeyName);

subKey.closeKey();

return true;

} catch (NoSuchKeyException e) {

System.out.println("NOsuchKey_delete");

} catch (NoSuchValueException e) {

System.out.println("NOsuchValue_delete");

} catch (RegistryException e) {

e.printStackTrace();

}

return false;

}

// 刪除注冊表中某節(jié)點下的某節(jié)點

public static boolean deleteSubKey(String folder, String subKeyNode) {

try {

RegistryKey software = Registry.HKEY_LOCAL_MACHINE

.openSubKey(folder);

software.deleteSubKey(subKeyNode);

software.closeKey();

return true;

} catch (NoSuchKeyException e) {

e.printStackTrace();

} catch (RegistryException e) {

e.printStackTrace();

}

return false;

}

// 打開注冊表項并讀出相應的變量名的值

public static String getValue(String folder, String subKeyNode,

String subKeyName) {

String value = "";

try {

RegistryKey software = Registry.HKEY_LOCAL_MACHINE

.openSubKey(folder);

RegistryKey subKey = software.openSubKey(subKeyNode);

value = subKey.getStringValue(subKeyName);

subKey.closeKey();

} catch (NoSuchKeyException e) {

value = "NoSuchKey";

// e.printStackTrace();

} catch (NoSuchValueException e) {

value = "NoSuchValue";

// e.printStackTrace();

} catch (RegistryException e) {

e.printStackTrace();

}

return value;

}

// 測試

public static void main(String[] args) {

setValue("SOFTWARE", "Microsoft\\Windows\\CurrentVersion\\Run", "test",

"C:\\1.exe");

}

}

這樣,就可以在軟件中添加,刪除,修改開機啟動項了

怎么java代碼打包成可執(zhí)行jar并用批處理bat運行

在文檔中寫上 java -jar D:\workspace\test\test_fat.jar 然后文檔后綴改成.bat。然后把bat文件和你的test_fat放在一個文件夾中,就行了

前提是:你的jar包打的正確,用Eclipes打包時注意指定Main Class

然后就沒問題了。

你也可以手動修改

打開jar包,里面有個mate-inf文件夾,把里面的manifest.mf文件拷出來,打開,如下:

Manifest-Version: 1.0

Created-By: 1.6.0_06 (Sun Microsystems Inc.)

Main-Class: thinkerbell.src.MainClassAction(你需要把這里改成你的啟動class文件路徑,就是main方法在哪個class中,就寫哪個class路徑,要是有包夜妖帶上,然后再覆蓋回去就行了

用記事本打開manifest.mf,然后修改就可以了;


當前文章:java代碼打版啟動 java已啟動但返回退出代碼怎么辦
標題網(wǎng)址:http://weahome.cn/article/hiehhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部