Eclipse 執行時期選項
3.1 版 - 前次修訂日期:2005 年 6 月 15 日
Eclipse 平台具有高度的可配置性。
配置輸入採取指令行引數和系統內容設定的形式。
在許多情況下,指令行引數都只是設定相關系統內容的捷徑。
事實上,系統內容設定的數目比指令行引數還多。
指令行引數
下面列出 Eclipse 執行時期各個部分所處理的指令行引數。
您可以在指令行中使用 -D VM 引數、在 config.ini 檔中指定這些值,或使用 <launcher>.ini 檔,來利用「系統」內容指定這些值。
如果使用後二種技術,您完全不需要使用指令行引數,就可以自訂您的 Eclipse。
清單中每個引數都有對應的系統內容鍵(在 {} 中)。
另外還有處理指令行引數的 Eclipse 執行時期層次(在 () 中)。
對於想要取代執行時期的各個部分來配合特殊需求的人而言,這非常有用。
- -application <id> (Runtime)
- 等於是將 eclipse.application 設為 <id>
- -arch <architecture> (OSGi)
- 等於是將 osgi.arch 設為 <architecture>
- -clean (OSGi)
- equivalent to setting osgi.clean to "true"
- -configuration <location> (Main)
- 等於是將 osgi.configuration.area 設為 <location>
- -console [port] (OSGi)
- 如果要使用預設埠(也就是在未指定埠時),等於是將 osgi.console 設為 [port] 或空字串
- -consoleLog (Runtime)
- 等於是將 eclipse.consoleLog 設為
"true"
- -data <location> (OSGi)
- 等於是將 osgi.instance.area 設為 <location>
- -debug [options file] (OSGi)
- 等於是將 osgi.debug 設為 [options file] 或空字串,只啟用除錯(也就是在未指定 options file 位置的情況下)
- -dev [entries] (OSGi)
- 等於是將 osgi.dev 設為 [entries] 或空字串,只啟用 dev 模式(也就是在未指定 entries 的情況下)
- -endSplash <command> (Main)
- 指定要用來取得歡迎畫面的指令。
通常由 Eclipse 執行檔來提供。
- -feature <feature id> (Runtime)
- 等於是將 eclipse.product 設為 <feature id>
- -framework <location> (Main)
- 等於是將 osgi.framework 設為 <location>
- -initialize (Main)
- 起始所執行的配置。
所有執行時期相關資料結構和快取記憶體都會重新整理。
不會除去任何使用者/外掛程式定義的配置資料。
不會執行任何應用程式,任何產品規格都會被忽略,不會呈任何 UI(如不會顯示歡迎畫面)
- -install <location> (Main)
- 等於是將 osgi.install.area 設為 <location>
- -keyring <location> (Runtime)
- 磁碟上的授權資料庫位置。這個引數必須結合 -password 引數來使用。
- -name <string> NEW
- 啟動應用程式時,要顯示在作業列項目的名稱。如果未設定,則名稱會是執行檔的名稱。
- -nl <locale> (OSGi)
- 等於是將 osgi.nl 設為 <locale>
- -noExit (OSGi)
- 等於是將 osgi.noShutdown 設為 "true"
- -noLazyRegistryCacheLoading (Runtime)
- 等於是將 eclipse.noLazyRegistryCacheLoading 設為 "true"
- -noRegistryCache
(Runtime)
- 等於是將 eclipse.noRegistryCache 設為 "true"
- -noSplash (Executable, Main)
- 控制是否顯示歡迎畫面
- -os <operating system> (OSGi)
- 等於是將 osgi.os 設為 <operating system>
- -password <password> (Runtime)
- 授權資料庫的密碼
- -pluginCustomization <location> (Runtime)
- 等於是將 eclipse.pluginCustomization 設為 <location>
- -product <id> (OSGi)
- 等於是將 eclipse.product 設為 <id>
- -showSplash <command> (Main)
- 指定要用來顯示歡迎畫面的指令。通常由 Eclipse 執行檔來提供。
- -startup <location> (Executable) NEW
- 用來啟動 Eclipse 之 JAR 的位置。參照的 JAR 必須設定「主要類別」屬性。
如果未設定這個參數,則會使用 startup.jar,其位於與執行檔所在的相同資料夾中。
- -user <location> (OSGi)
- 等於是將 osgi.user.area 設為 <location>
- -vm <path to java executable> (Executable, Main)
- 當傳給 Eclipse 執行檔時,這個選項用來尋找執行 Eclipse 時所用的 Java VM。
它必須是適當 Java 執行檔的完整檔案系統路徑。
如果未指定的話,Eclipse 執行檔會利用搜尋演算法來尋找適當的 VM。
之後,不論在任何事件中,執行檔都會利用 -vm 引數,將所用的實際 VM 的路徑傳給 Java Main。
之後,Java Main 會將這個值儲存在 eclipse.vm 中。
- -vmargs [vmargs*] (Executable,
Main)
- 當傳給 Eclipse 時,這個選項用來自訂執行 Eclipse 時所用的 Java VM 作業。
如果指定的話,這個選項必須在指令行的尾端。
即使未在執行檔指令行上執行,執行檔也會自動利用 -vmargs 引數,將相關的引數(包括啟動的類別)加到傳給 Java 的指令行。
之後,Java Main 會將這個值儲存在 eclipse.vmargs 中。
- -ws <window system> (OSGi)
- 等於是將 osgi.ws 設為 <window system>
已作廢的指令行引數
下列指令行已不再相關或已被取代,它們由執行時期使用,不會傳給所執行的應用程式來維護舊版相容性。
.
- -boot
- 請參閱 -configuration
- -classLoaderProperties
- 已不再相關
- -firstUse
- 已不再相關
- -newUpdates
- 已不再相關
- -noPackagePrefixes
- 已不再相關
- -noUpdate
- 已不再相關
- -plugins
- 已不再相關
- -update
- 已不再相關
其他
下列指令行引數由各種 Eclipse 外掛程式來定義,只有在定義它們的外掛程式已安裝、解析和啟動時,它們才會受到支援。
- -noVersionCheck (workbench)
- <description>
- -perspective (workbench)
- <description>
- -refresh (org.eclipse.core.resources)
- <description>
- -showLocation (org.eclipse.ui.ide.workbench)
- <description>
- -allowDeadlock
- <description>
系統內容
Eclipse 執行時期使用下列系統內容。
請注意,開頭是 "osgi" 的系統內容是 OSGi 組織架構實作專用的系統內容,
開頭是 "eclipse" 的系統內容是在 OSGi 組織架構上的 Eclipse 執行時期層次專用的系統內容。
許多這些內容都有指令行對等項目(請參閱指令行引數一節,以及大括號 {} 中的值)。
使用者可以使用指令行或內容設定來指定值。
您可以依照下列方式來設定內容:
- 利用 -DpropName=propValue 作為 Java VM 的 VM 引數
- 在 config.ini 檔內的適當配置區中,設定所需要的內容
- eclipse.application {-application}
- 要執行的應用程式 ID。這裡提供的值用來置換執行的產品所定義的任何應用程式(請參閱 eclipse.product)
- eclipse.commands
- 啟動 Eclipse 時,會傳入的所有指令行引數清單(以換行分隔)。
- eclipse.consoleLog
- 如果是 "true",任何日誌輸出也都會傳送到 Java 的 System.out(如果有的話,通常也會傳回指令 Shell)。
當結合 -debug 使用時,非常方便
- eclipse.debug.startupTime
- 啟動這個階段作業的 Java VM 的時間(毫秒)
- eclipse.exitcode
- <description>
- eclipse.exitdata
- <description>
- eclipse.log.backup.max
- 允許的備份日誌檔數目上限。因旋轉日誌檔而達到備份日誌檔的數目上限後,會刪除最早的備份日誌檔。
預設值是 "10"。負數或零值會導致使用預設值。
- eclipse.log.size.max
- 允許日誌檔成長的大小上限 (KB)。檔案大小超出大小上限時,日誌檔便會旋轉。預設值是 "1000"。
負數值會導致使用預設值。零值表示沒有日誌檔大小上限。
- eclipse.noExtensionMunging
- 如果是 "true",舊式登錄延伸規格就會依現狀保留下來。
依預設,會更新這些延伸規格來使用在 Eclipse 3.0 中找到的新延伸點 ID。
- eclipse.noLazyRegistryCacheLoading {-noLazyRegistryCacheLoading}
- 如果是 "true",就會取消啟動平台的外掛程式登錄快取載入最佳化。
依預設,配置元素只有在需要時才會從登錄快取中載入(可以使用時),以減少記憶體覆蓋區。
這個選項可強迫在啟動時完全載入登錄快取。
- eclipse.noRegistryCache {-noRegistryCache}
- 如果是 "true",既不會讀取、也不會寫入內部延伸登錄快取記憶體
- eclipse.pluginCustomization {-pluginCustomization}
- 包含外掛程式喜好設定之預設值的內容檔之檔案系統位置。這些預設值會置換主要特性中指定的預設值。相對路徑被解譯為相對於 Eclipse 本身的現行工作目錄。
- eclipse.product {-product}
- 將要執行的產品 ID。這用來控制各種品牌資訊以及使用哪個應用程式。
- eclipse.startTime
- 這個內容在啟動 Eclipse 時設定。這個內容的值是 System.currentTimeMillis() 所傳回之值的字串表示法。這個值不是要讓使用者設定的。
- eclipse.vm {-vm}
- 用來執行 Eclipse 的 Java 執行檔的路徑。
這個資訊用來建構重新啟動指令行。
- eclipse.vmargs {-vmargs}
- 列出用來執行 Eclipse 的 VM 引數。
這個資訊用來建構重新啟動指令行。
- osgi.adaptor
- 要用的 OSGi 組織架構配接器的類別名稱。
- osgi.arch {-arch}
- 請參閱 -arch
- osgi.baseConfiguration.area
- 指定當未指定 osgi.configuration.area 時,所使用的基本配置。
- osgi.bundles
- 在系統啟動和執行之後,會自動安裝和選擇性地啟動的逗點分隔的軟體組清單。
各項目的格式如下:
<URL | simple bundle location>[@ [<start-level>] [":start"]]
如果省略啟動層次(>0 整數),組織架構會使用軟體組的預設啟動層次。
如果新增 "start" 標示,就會在安裝之後,將軟體組標示成已啟動。
簡單軟體組位置會解譯成相對於組織架構的母目錄。 start-level 指示軟體組應該執行的 OSGi 啟動層次。
如果未設定這個值,系統會計算適當的預設值。
- osgi.clean
- 如果設定為 "true",任何使用 OSGi 組織架構以及 Eclipse 執行時期所快取的資料將會被清除。這將會清除使用來儲存
軟體組相依關係與 Eclipse 延伸登錄資料的快取記憶體。使用此選項將會強迫 Eclipse 對這些快取記憶體進行重新初始化。
- osgi.configuration.cascaded
- 如果設為 "true",這個配置會連鎖於母項配置。
母項配置由 osgi.sharedConfiguration.area 所指定。請參閱位置中的章節,以取得取得詳細資料。
- osgi.configuration.area {-configuration}
- 這項平台作業的配置位置。
這個配置決定了將執行的外掛程式以及各個其他系統設定。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.configuration.area.default
- 這項平台作業的預設配置位置。
這個配置決定了將執行的外掛程式以及各個其他系統設定。
只有在未設定 osgi.configuration.area 的值時,才使用這個值(也就是預設值)。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.console {-console}
- 如果設成非空值,就會啟用 OSGi 主控台(如果已安裝的話)。
如果這個值是適當的整數,就會將它解譯成主控台用來接聽的埠,且會將它的輸出導向給定的埠。
非常適合用來探索系統的狀態。
- osgi.console.class
- 要執行的主控台的類別名稱(如果要求的話)
- osgi.debug {-debug}
- 如果設成非空值,平台就會進入除錯模式。
如果這個值是字串,就會將它解譯成 .options 檔的位置。
這個檔案指出哪些除錯點可供外掛程式使用,以及是否已經啟用。
如果未指定位置,平台會搜尋在安裝目錄下的 .options 檔。
- osgi.dev {-dev}
- 如果設為空字串,就只會開啟 dev 模式。
這個內容也可以設成會加到各外掛程式之類別路徑中的逗點分隔類別路徑項目,
或設成包含一組外掛程式的自訂類別路徑新增項目之 Java 內容檔的 URL。
對於每個需要自訂 dev 時間類別路徑的外掛程式,這個檔案都會包含一個格式如下的項目:
<plug-in id>=<comma separated list of classpath entries to add>
其中外掛程式 ID "*" 符合任何未在其他情況下提及的外掛程式。
- osgi.framework
- OSGi 組織架構的 URL 位置。如果 Eclipse 安裝是分離的,就非常有用。請參閱位置中的章節,以取得取得詳細資料。
- osgi.frameworkClassPath
- OSGi 組織架構實作的逗點分隔的類別路徑項目清單。
相對位置會相對於組織架構位置(請參閱 osgi.framework)來解譯
- osgi.framework.extensions
- 以逗點區隔的組織架構延伸清單。各項目的格式如下:
<URL | simple bundle location>
如果指定了簡式軟體組位置(不是 URL),則會在 org.eclipse.osgi 軟體組的母項目錄中完成搜尋。您可以使用組織架構延伸來執行具有不同組織架構配接器的 Eclipse。組織架構延伸可包含 eclipse.properties 檔,以設定系統內容。例如,提供組織架構配接器實作的組織架構延伸可藉由設定 osgi.adaptor 內容的方法,來設定配接器的類別。
- osgi.framework.shape
- 設為「Eclipse OSGi 組織架構」實作的形狀。這個內容是在啟動 Eclipse 平台時設定,而且不是要讓使用者設定的。"jar" 值指出「Eclipse OSGi 組織架構」內含在單一 JAR 中。"folder" 值指出「Eclipse OSGi 組織架構」內含在目錄中。
- osgi.java.profile
- 要使用的 JRE 設定檔 URL。JRE 設定檔包含 org.osgi.framework.system.packages 和 org.osgi.framework.bootdelegation 內容的值。
如果未設定 osgi.java.profile,則會依據執行中 JRE 的 java.specification.version 值,來選取設定檔。
- osgi.java.profile.bootdelegation
-
Java 設定檔 osgi.java.profile 可能包含
"org.osgi.framework.bootdelegation" 內容。這個值可用來設定系統內容 "org.osgi.framework.bootdelegation"。osgi.java.profile.bootdelegation
指出要使用的 bootdelegation 原則。下列值是有效值(預設值是 ignore):
- ignore - 指出應該忽略 Java 設定檔中的 "org.osgi.framework.bootdelegation" 值。
系統內容 "org.osgi.framework.bootdelegation" 會用來決定應委派啟動哪個套件。
- override -
指出 Java 設定檔中的 "org.osgi.framework.bootdelegation" 應置換系統內容 "org.osgi.framework.bootdelegation"。
- none -
指出應忽略 Java 設定檔的 "org.osgi.framework.bootdelegation" 「和」系統內容。這是最嚴格的選項。
與這個選項一起執行導致組織架構使用 OSGi R4 嚴格啟動委派模型。
- osgi.install.area {-install}
- 平台的安裝位置。這個設定指示基本 Eclipse 外掛程式的位置,如果 Eclipse 安裝是分離的,就非常有用。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.instance.area {-data}
- 這個階段作業的實例資料位置。外掛程式使用這個位置來儲存其資料。
比方說,資源外掛程式會使用這個作為專案的預設位置(如:工作區)。請參閱位置中的章節,以取得取得詳細資料。
- osgi.instance.area.default
- 這個階段作業的預設實例資料位置。外掛程式使用這個位置來儲存其資料。
比方說,資源外掛程式會使用這個作為專案的預設位置(如:工作區)。只有在未設定 osgi.instance.area 的值時,才使用這個值(也就是預設值)。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.locking
- 針對這項平台作業而使用的鎖定類型。有效的鎖定類型是 "java.io"、"java.nio" 和 "none"。預設值是
"java.nio";除非 JRE 不支援 "java.nio",否則 "java.io" 為預設值。
- osgi.manifest.cache
- 探索和產生產生 Manifest 的位置。
預設值是在配置區中,但 Manifest 快取可以個別儲存。
- osgi.nl {-nl}
- Eclipse 平台所執行的語言環境名稱。
NL 值應該遵循標準 Java 語言環境命名慣例。
- osgi.noShutdown {-noExit}
- 如果是 "true",則在 Eclipse 應用程式結束後,VM 便不會存在。這有助於在 Eclipse 應用程式結束後,
檢查 OSGi 組織架構。
- osgi.os {-os}
- 作業系統值。這個值應該是 Eclipse(如 x86、sparc...)所認得的 Eclipse 處理器架構名稱之一。
- osgi.parentClassLoader
- 對於已安裝在「組織架構」中的所有軟體組,要當作母項類別載入器使用的類別載入器類型。有效類型如下:
- app - 應用程式類別載入器。
- boot - 啟動類別載入器。
- ext - 延伸類別載入器。
- fwk - 組織架構類別載入器。
- osgi.requiredJavaVersion
- 啟動 Eclipse 所需的最低 Java 版本需求。預設值是 "1.4.1"。
- osgi.resolverMode
- 用來解析已安裝在「組織架構」中之軟體組的模式。"strict" 值將解析器置於嚴格模式。預設的解析器模式不是嚴格。解析器處於嚴格模式時,
若從指定 x-internal 或 x-friends 指引的已匯出套件中,載入類別和資源,則「組織架構」會強迫存取限制規則。
- osgi.sharedConfiguration.area
- 這項平台作業的共用配置位置。如果 osgi.configuration.cascaded 內容設為 "true",則共用配置區會當成母項配置使用。
- osgi.splashLocation
- 啟動 Eclipse 時所顯示的歡迎畫面(.bmp 檔)的絕對 URL 位置。
這個內容會置換 osgi.splashPath 中設定的值。
- osgi.splashPath
- 在其中搜尋 splash.bmp 檔的逗點分隔的 URL 清單。
這個內容被 osgi.splashLocation 中設定的值所置換。
- osgi.syspath
- 設為「Eclipsee OSGi 組織架構」(org.eclipse.osgi) 實作所在的路徑。例如,"<eclipse install path>/eclipse/plugins"。這個內容是在啟動 Eclipse 平台時設定,而且不是要讓使用者設定的。
- osgi.user.area {-user}
- 使用者區域的位置。使用者區域包含 OS 使用者專用且獨立於 Eclipse 安裝、配置或實例之外的資料(如喜好設定)。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.user.area.default
- 使用者區域的預設位置。使用者區域包含 OS 使用者專用且獨立於 Eclipse 安裝、配置或實例之外的資料(如喜好設定)。
只有在未設定 osgi.user.area 的值時,才使用這個值(也就是預設值)。
請參閱位置中的章節,以取得取得詳細資料。
- osgi.ws {-ws}
- 視窗系統值。這個值應該是 Eclipse(如 win32、motif...)所認得的 Eclipse 視窗系統名稱之一。
位置
Eclipse 執行時期定義若干位置,為外掛程式開發人員提供了讀取/儲存資料的環境定義,
為 Eclipse 使用者提供了對於資料之共用和可見性範圍的控制。
Eclipse 定義下列位置記號:
- 使用者 (-user) {osgi.user.area} [@none, @noDefault, @user.home, @user.dir,
filepath, url]
- 使用者位置是執行圖例使用者所專用的。
使用者位置通常是以 Java
user.home
系統內容值為基礎,但可予以置換。
您可以在使用者位置中,找到使用者範圍喜好設定和登入資訊之類的資訊。
- 安裝 (-install) {osgi.install.area} [@user.home, @user.dir, filepath,
url]
- 安裝位置是 Eclipse 本身的安裝位置。
實際上,這個位置是所執行的 startup.jar 或 eclipse.exe 的母項目錄(通常是 "eclipse")。
對一般使用者而言,這個位置應該視為唯讀,因為安裝可由許多使用者來共用。
您可以設定安裝位置,再分離 startup.jar 和 Eclipse 的其餘部分。
- 配置 (-configuration) {osgi.configuration.area} [@none, @noDefault,
@user.home, @user.dir, filepath, url]
- 配置位置包含用來識別和管理要執行的安裝(子)集的檔案。
就此而言,每項安裝都可能有許多配置。
安裝可能會檢附預設配置區,但一般啟動實務所涉及的執行時期會試圖尋找比較能夠寫入的配置位置。
- 實例 (-data) {osgi.instance.area} [@none, @noDefault, @user.home,
@user.dir, filepath, url]
- 實例位置包含使用者定義的資料成品。
比方說,資源外掛程式會利用實例區來作為工作區位置,因而成為專案的預設起始位置。
其他外掛程式可以在這個位置自由寫入它們想寫入的任何檔案。
使用者可以設定任何這些位置,如果沒有提供值的話,Eclipse 會計算合理的預設值。
設定位置最常見的使用個案是實例區,在 IDE 環境定義中,則是工作區。
如果要在特定資料集上執行預設 Eclipse 配置,您可以指定:
eclipse -data c:\mydata
其他詳細資料
位置是 URL。為了簡單,檔案路徑也可以接受,它會自動轉換成 file: URL。
為了更方便及更好控制,您也可以使用許多預先定義的符號位置。
請注意,並非位置類型和符號值的所有組合都有效。
下表詳細說明可能的組合。
由於預設情況是針對所有要設定的有效和可寫入的位置,部分外掛程式在其他設定中可能會失敗,即使它們列為可能的,也是如此。
比方說,如果未定義實例區,期待焦點在使用者資料的外掛程式(如 Eclipse 資源外掛程式)去執行太多動作並不合理。
外掛程式開發人員必須負責選擇他們所支援的設定,並據此來設計其功能。
- @none
- 表示絕不應設定對應的位置,不論是明確設定或設為預設值,都是如此。
比方說,沒有使用者資料的 RCP 樣式應用程式可以利用 osgi.instance.area=@none 來防止將無關的檔案寫入磁碟中。
@none 後面不能接著任何附加的路徑區段。
- @noDefault
- 強制取消定義或明確定義某個位置(也就是說,Eclipse 不自動計算預設值)。
當您要接受對應位置中的資料,但 Eclipse 預設值並不適合時,這就很有用。
@noDefault 後面不能接著任何附加的路徑區段。
- @user.home
- 引導 Eclipse 相對於使用者的起始目錄來計算位置值。
@user.home 後面可以接著附加的路徑區段。
在所有情況中,"@user.home" 字串都會簡單地用 Java "user.home" 系統內容來取代。
比方說,設定
osgi.instance.area=@user.home/myWorkspace
會產生下列值:
file:/users/bob/myWorkspace
- @user.dir
- 引導 Eclipse 相對於現行工作目錄來計算位置值。
@user.dir 後面可以接著附加的路徑區段。
在所有情況中,"@user.dir" 字串都會簡單地用 Java "user.dir" 系統內容來取代。
比方說,設定
osgi.instance.area=@user.dir/myWorkspace
會產生下列值:
file:/usr/share/eclipse/myWorkspace
位置/值 |
支援預設值 |
檔案/URL
|
@none
|
@noDefault
|
@user.home
|
@user.dir
|
instance
|
yes |
yes
|
yes
|
yes
|
yes
|
yes(預設值)
|
configuration
|
yes
|
yes
|
yes*
|
yes*
|
yes
|
yes
|
install
|
no
|
yes
|
no
|
no
|
yes
|
yes
|
user
|
yes
|
yes
|
yes
|
yes
|
yes
|
yes
|
* 表示這個設定在技術上可能,但實際上很難管理。
特別是在沒有配置位置時,Eclipse 執行時期可能只會做到啟動 OSGi 組織架構。
唯讀位置
您可藉由附加 ".readOnly" 到位置內容,並將它設為 "true" 值,來將位置指定為唯讀位置。下列內容可用來
將其相對應的位置指定為唯讀:
啟動程式 ini 檔案
現在,eclipse.exe 和 RCP 應用程式較常用的執行檔從相關的 inii 檔案來讀取參數。這個檔案提供獨立式平台來傳入先前必須直接在指令行中指定的引數(例如 vm 或 vm 引數)。
雖然可以在這個檔案中指定所有參數,但為了各種安裝的可維護性和一致性,建議您在這個 ini 檔案中只要指定 vm 位置和 vm 引數,其他的則使用 config.ini 檔。
檔案格式
此檔案必須以執行檔名稱來命名(例如,eclipse.exe 會讀成 eclipse.ini,而 launcher.exe 則讀成 launcher.ini),且必須在檔案的換行中指定每個參數。以下是指定 vm 位置和部分參數的檔案範例:
-vm
c:/myVm/java.exe
-vmargs
-Dms40M