rt.jarのデバッグバージョンをビルドします

なぜこれが必要なのですか?



したがって、これの代わりに:



画像



標準のJavaライブラリをデバッグする場合は、こちらをご覧ください>>





画像



リンクで説明されているアプローチに基づいて作成されました。



www.javalobby.org/java/forums/t103334.html

forums.sun.com/thread.jspa?threadID=428018&tstart=1620

www.javalobby.org/java/forums/t19866.html



どうやって? 簡単に言うと、 -gコンパイラオプションを使用してJDKからsrc.zipを再コンパイルします。



前提条件:JDKおよびpythonによってインストールされます。



手順。 明確にするために、どこかに空のパパを作成します。D:/ rt_debug、JDKインストールからsrc.zipおよびrt.jarを解凍します。 新しくインストールしたjdk-6u20でこの手順を実行しました。 したがって、D:/ rt_debugに2つのフォルダーD:/ rt_debug / rtとD:/ rt_debug / srcがあります。 同じフォルダーで、次の内容のスクリプトgen_compile_files_list.pyを作成します。



from os import walk

from os.path import join



def find(path, ext):

for dir, _, files in walk(path):

for f in files:

if f.endswith(ext):

yield join(dir, f)



#print '\n' .join(find( 'src' , '.java' ))



def go():

src_files = list(find( 'src' , '.java' ))

rt_files = list(find( 'rt' , '.class' ))



n_src = len(src_files)

n_rt = len(rt_files)



print 'java files:' , n_src

print 'rt files:' , n_rt



src_files=[s[4:-5] for s in src_files] # src/qqq.java -> qqq

rt_files = set ([s[3:-6] for s in rt_files ]) # rt/qqq. class -> qqq



out = open( "to_compile.txt" , "w" )



to_compile = 0

obsolete = 0



for j in src_files:

f = "%s.java\n" % j

if j in rt_files:

out .write(f)

to_compile += 1

else :

#print "Obsolete: " , f

obsolete += 1



print 'will compile:' , to_compile

print 'obsolete:' , obsolete



out .close()



go()



* This source code was highlighted with Source Code Highlighter .








このコードは、to_compile.txtファイルに.javaファイルのコンパイル済みリストを生成します。 事実、判明したsrc.zipにはrt.jarにないソースがいくつかあります(したがって、下位互換性があると思いますか?)。これが存在するとコンパイルが中断されます。



スクリプトを実行すると、to_compile.txtファイルが表示されます。 次に、次の内容でc.batファイルを作成します(java_homeへのパスを修正します)。



@echo off



set JH=C:/Program Files/Java/jdk1.6.0_20

set VER=1.6



if not exist classes (

echo Creating classes dir

mkdir classes

)



echo Compiling...



cd src

"%JH%\bin\javac" -nowarn -g -d ../classes -J-Xmx512m -classpath ../rt -source %VER% -target %VER% @../to_compile.txt 2>../error.log



echo Creating jar...



cd ../classes

"%JH%\bin\jar" -cf ../rt-dbg.jar *



cd ..



echo Done.




* This source code was highlighted with Source Code Highlighter .








または、Linuxユーザーの場合、コンテンツを含むc.sh:



JH= "C:/Program Files/Java/jdk1.6.0_20"

VER=1.6



if ! [ -d classes ]; then

echo Creating classes dir

mkdir classes

fi



echo Compiling...



cd src

"$JH\bin\javac" -nowarn -g -d ../classes -J-Xmx512m -classpath ../rt -source $VER -target $VER @../to_compile.txt 2>../error.log



echo Creating jar...



cd ../classes

"$JH\bin\jar" -cf ../rt-dbg.jar *



echo Done.




* This source code was highlighted with Source Code Highlighter .








(スクリプトはMSYSでテストされました)。



その結果、すべてがうまくいけば(最後にerror.logをチェックし、warning'iだけがあるはずです)、同じディレクトリにrt-dbg.jarファイルを取得します。



次に、Javaにこのアセンブリのクラスを使用させるには、キーで実行する必要があります



-Xbootclasspath/p:D:/rt_debug/rt-dbg.jar







上記のリンク 、Javaインストールのエンドースされたディレクトリにドロップできると言っていますが、この方法ではうまくいきませんでした。



上記のコードはリンクからダウンロードできます。

UPD。 rt-dbg.jar (17 mb)



All Articles