Spero di poterti dare un paio di suggerimenti senza sembrare presuntuoso.
Ho visto tutto l'arzigogolamento che hai fatto per riempire la map, il che mi ha fatto pensare che sei molto abituato ad usare gli Array e forse ben poco le List.
Quest'ultime sono molto simili agli Array ma molto più "potenti" e comode da usare.
Altra cosa è che a volte è molto meglio usare delle costanti. Ad esempio questa parte del tuo sorgente:
Dim Args() As String = Array As String("-cp", m.GetValueAt(2), "b4x.plugins.ivanomonti.main", m.GetValueAt(4), m.GetValueAt(5), m.GetValueAt(6)) ' argomenti che passo
shl.Initialize("shl", "java", Args) comando linea
shl.WorkingDirectory = m.GetValueAt(3) ' path del plugins
E che ne so, io che non ho sviluppato quel codice e tu stesso, tra un po' di tempo, a cosa corrisponderanno i valori della map nelle posizioni 2-3-4-5-6 che vedo scritte là (a parte che Erel ti direbbe che GetValutAt e GetKeyAt sono "deprecabili", sconsigliati)?
Se invece avessi preparato delle costanti:
Public Const PLUG_ARG_NAME As Int = 1
Public Const PLUG_ARG_FILE As Int = 2
Public Const PLUG_ARG_DIR As Int = 3
etc.
poi avresti scritto:
m.GetValueAt(PLUG_ARG_NAME)
m.GetValueAt(PLUG_ARG_FILE)
m.GetValueAt(PLUG_ARG_DIR)
etc.
In questo modo il codice risulta più leggibile (anche a te stesso tra un anno) e non devi ricordarti a memoria se nella posizione 2 hai il la dir o il file o il nome o...
(comunque andrebbero usate costanti stringa, con i valori "name", "dir", "file"...
e prelevati i valori dalla Map con:
m.Get(PLUG_ARG_NAME) ' <--- costante stringa con valore "name")