Vulcan Spring 公司是家專業(yè)制造精密特種彈簧的美國企業(yè),成立于1967年,現(xiàn)坐落于紐約西南部的賓州泰爾夫德市,生產(chǎn)的彈簧被用于外太空探測領(lǐng)域,人造衛(wèi)星和火星上的漫游者號等.

Vulcan Spring公司生產(chǎn)的彈簧以精巧,精確和壽命長而聞名,美國通用汽車GM公司、GE公司、摩托羅拉、波音公司、3M、埃默森Emerson公司等世界著名公司都是Vulcan公司的客戶。Vulcan 為客戶定制不同的彈簧。同時,在英國,德國,法國,意大利,中國臺灣、中國香港等國家和地區(qū)也有Vulcan公司的產(chǎn)品,Vulcan的產(chǎn)品 (PullBox等)在沃爾瑪?shù)却笮统袘?yīng)用廣泛.

Vulcan Spring工廠占地面積5600平方米,那里涵蓋了生產(chǎn)彈簧產(chǎn)品所有的生產(chǎn)工序.同時,公司內(nèi)部還擁有一支設(shè)計經(jīng)驗豐富、專業(yè)技術(shù)和制造能力過硬的彈簧設(shè)計專家隊伍,能快速提供客戶所需彈簧樣品,為客戶提供新產(chǎn)品設(shè)計并改善其現(xiàn)有產(chǎn)品的性能??蛻羧缬刑厥庖?,彈簧專家將協(xié)同客戶一起開發(fā)新產(chǎn)品.

Vulcan Spring 產(chǎn)品應(yīng)用范圍廣,可用于家電產(chǎn)品、動力工具、電動馬達、玩具、工業(yè)設(shè)備、辦公設(shè)備、“彈出式”陳列架、機械工具、電動設(shè)備、電子、外科儀器、X射線和核磁共振設(shè)備等諸多領(lǐng)域.

主要產(chǎn)品包括:

Contorque(恒扭力彈簧) ,該產(chǎn)品采用獨到的設(shè)計,Contorque彈簧在勢能不變的情況下可旋轉(zhuǎn)數(shù)圈,適于電纜延伸并可替代電池電機或配重。

電機電刷彈簧,為電機換向器電刷受力穩(wěn)固提供了理想手段,可減小電刷磨損,從而提高電機的作業(yè)性能。

Conpower動力彈簧,這種彈簧在比力矩不高的情況下可旋轉(zhuǎn)很多圈。彈簧由心軸或盒提供旋轉(zhuǎn)能或借助滑輪或纜線來提供線性運動。Vulcan還制造非預(yù)應(yīng)力動力彈簧。

機械卷筒,該產(chǎn)品能為需要平衡、回收或返回的應(yīng)用提供動力。在需要長偏轉(zhuǎn)的應(yīng)用中,機械卷筒供力穩(wěn)定且壽命期長。

其他定制彈簧,從沖壓片和封槽到線材成形、扭力彈簧、十字扣帶和定制的板簧設(shè)計。

Vulcan Spring造價信息

市場價 信息價 詢價
材料名稱 規(guī)格/型號 市場價
(除稅)
工程建議價
(除稅)
行情 品牌 單位 稅率 供應(yīng)商 報價日期
便攜式接地線概述 16mm2 查看價格 查看價格

安科電氣

13% 石家莊安科電氣有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9813;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率),電壓:5-600V電流:0.5mA- 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9815;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率),電壓:5-600V電流:0.5mA- 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9805;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率),電壓:5-600V電流:10mA-2 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9840;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率),電壓:5-600V電流:10mA-4 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9810;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率/諧波),電壓:2-300V電流:5mA 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9800;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率,電壓:5-600V電流:10mA-20 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
電產(chǎn)品描測量儀 品種:電產(chǎn)品描測量儀;產(chǎn)品型號:LK9811;產(chǎn)品描:交流單相(電壓/電流/功率/功率因素/頻率/諧波),電壓:5-600V電流:10m 查看價格 查看價格

長盛儀器

13% 重慶德源勝儀器有限公司
材料名稱 規(guī)格/型號 除稅
信息價
含稅
信息價
行情 品牌 單位 稅率 地區(qū)/時間
暫無數(shù)據(jù)
材料名稱 規(guī)格/需求量 報價數(shù) 最新報價
(元)
供應(yīng)商 報價地區(qū) 最新報價時間
PAM加藥泵 seko- spring系列, 泵頭pvc|1臺 1 查看價格 廣州創(chuàng)量環(huán)保設(shè)備有限公司 廣東   2018-01-25
PAC加藥泵 seko- spring系列, 泵頭pvc|1臺 1 查看價格 廣州創(chuàng)量環(huán)保設(shè)備有限公司 廣東   2018-01-25
墻紙 圖案:Rindle-Silver Spring 1370mm/1390mm 灰色背景色縱向波浪圖案|1m2 1 查看價格 上海迦樂裝飾材料有限公司    2015-12-04
系統(tǒng)回水循環(huán)水泵SPRINGN32-300:額定功率0.75kw 系統(tǒng)回水循環(huán)水泵SPRING N32-300:額定功率0.75kw|8臺 3 查看價格 成都華寶熱能設(shè)備有限公司 四川   2022-06-17
學(xué)情報告 分為全科報告及單科報告,其中全科報告包含的報表有考試情況概述、學(xué)業(yè)等級分布、達線情況、分?jǐn)?shù)分布形態(tài)、學(xué)業(yè)水平分段展示、單入雙入情況分析、班級學(xué)情概述、班級達線情況、名次段學(xué)生學(xué)情分析;單科報告包含的報表|11 1 查看價格 廣東天智實業(yè)有限公司 全國   2021-07-23
光模塊 SFP-GE-LX-SM1310;產(chǎn)品類型SFP光纖模塊產(chǎn)品概述光模塊-SFP-GE-單模模塊-(1310nm,10km,LC)|1臺 1 查看價格 北京億捷東方科技發(fā)展有限公司 全國   2018-03-16
小學(xué)聲學(xué)實驗箱 "實驗箱概述:本實驗箱主要探究聲音的產(chǎn)生、聲音的分類、聲音的存在和消失,通過經(jīng)典的音樂器材讓學(xué)生知道和感知聲音,利用典型實驗項目觸發(fā)學(xué)生對聲音的好奇心.|7套 1 查看價格 浙江綠盾教學(xué)設(shè)備有限公司 廣東   2021-08-11
應(yīng)用負載 硬件配置吞吐性能:700 Mbps,網(wǎng)口配置:6個千兆電口,性能應(yīng)用概述,包含服務(wù)器負載均衡、全局負載均衡、商業(yè)智能分析功能,以及緩存、壓縮、SSL卸載、TCP連接復(fù)用等優(yōu)化特性。支持單邊加速功能,提高低質(zhì)量網(wǎng)絡(luò)環(huán)境下遠端用戶的訪問速度|2個 2 查看價格 廣州市奧翔網(wǎng)絡(luò)技術(shù)有限公司 廣東  廣州市 2017-01-11

Vulcan Spring概述常見問題

  • spring鍋具怎么樣

    媒體評為鍋具中的奔馳,鍋具中的香奈兒    完美的水封設(shè)計,將鍋內(nèi)水氣留住,維持食物的色澤與鮮美,真正達到無水烹調(diào)的極致。五曾復(fù)合合金傳熱極佳,熱能能有效均勻的傳達至鍋底到鍋身,...

  • 瑞士鍋具力康和spring哪個更好?

    您好,據(jù)我所知瑞士瑞蓮鍋具質(zhì)量還算是不錯。spring沒用過也不好亂說 鍋產(chǎn)品質(zhì)量在二線品牌中算是挺好的,質(zhì)量一點也不比一線中一些品牌差,做工精細,好漂亮的又好用,外觀光可鑒人,手感厚實光滑,很高大上...

  • spring廚具怎么樣?

    spring是中國最大、全球第二的炊具研發(fā)制造商,中國廚房小家電領(lǐng)先品牌。產(chǎn)品的技術(shù)都是國內(nèi)最新的,質(zhì)量更是有幾十年沉淀的口碑在那里。

Vulcan Spring概述文獻

【免費下載】Spring框架課程設(shè)計指導(dǎo)書 【免費下載】Spring框架課程設(shè)計指導(dǎo)書

格式:pdf

大小:82KB

頁數(shù): 6頁

評分: 4.4

Spring 框架 課程設(shè)計指導(dǎo)書 長春工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院 2015 年 7 月 1 一、實驗?zāi)康?Spring 是一個開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。 框架的主要優(yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件, 同時為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。 按照所學(xué)的知識,設(shè)計開發(fā)一個小型的電子商務(wù)類系統(tǒng)。旨在通過完成一 個項目的開發(fā) ,通過實際問題培養(yǎng)學(xué)生的動手能力,并且使學(xué)生更加深入的理解 和靈活掌握教學(xué)內(nèi)容。通過實驗使學(xué)生更加熟練的掌握 Myeclipse 的使用,使 學(xué)生更加深入的了解 java web 的開源框架的使用。 二、實驗要求 1、課程設(shè)計時間為一周,以 3 人為一小組,每個小組在設(shè)計的第一天進 行選題,制訂進度計劃,分配任務(wù),在設(shè)計的最后一天整理系統(tǒng)文檔,形成設(shè) 計報告。 2、根據(jù)課程設(shè)計的目的、要求認真準(zhǔn)備。不遲到、不早

立即下載
基于Struts 2+JPA+Spring 2架構(gòu)的IT服務(wù)臺系統(tǒng)的設(shè)計與實現(xiàn) 基于Struts 2+JPA+Spring 2架構(gòu)的IT服務(wù)臺系統(tǒng)的設(shè)計與實現(xiàn)

格式:pdf

大?。?span id="on9r6pn" class="single-tag-height">82KB

頁數(shù): 5頁

評分: 4.8

在Jave EE應(yīng)用開發(fā)中,使用優(yōu)秀的框架可以提高系統(tǒng)的開發(fā)效率、更穩(wěn)定的性能、同時有利于后期的維護和更新。通過整合Struts 2、JPA、Spring 2三個框架,構(gòu)建了一種輕量級Java EE架構(gòu)。該架構(gòu)以Spring 2為核心,整合JPA進行持久化訪問;整合Struts 2以MVC模式控制。并利用此架構(gòu)設(shè)計開發(fā)了基于ITIL的IT服務(wù)管理中服務(wù)臺系統(tǒng)。實踐證明,該架構(gòu)使得項目開發(fā)簡潔、結(jié)構(gòu)清晰,并具有良好的復(fù)用性、擴展性和可維護性。

立即下載

其主要功能有:①控制機械的運動,如內(nèi)燃機中的閥門彈簧、離合器中的控制彈簧等。②吸收振動和沖擊能量,如汽車、火車車廂下的緩沖彈簧、聯(lián)軸器中的吸振彈簧等。③儲存及輸出能量作為動力,如鐘表彈簧、槍械中的彈簧等。④用作測力元件,如測力器、彈簧秤中的彈簧等。彈簧的載荷與變形之比稱為彈簧剛度,剛度越大,則彈簧越硬。

按受力性質(zhì),彈簧可分為拉伸彈簧、壓縮彈簧、扭轉(zhuǎn)彈簧和彎曲彈簧,按形狀可分為螺旋彈簧、碟形彈簧、環(huán)形彈簧、板彈簧、平面蝸卷彈簧以及扭桿彈簧等。普通圓柱螺旋彈簧由于制造簡單,且可根據(jù)受載情況制成各種型式,結(jié)構(gòu)簡單,故應(yīng)用最廣。彈簧的制造材料一般來說應(yīng)具有高的彈性極限、疲勞極限、沖擊韌性及良好的熱處理性能等,常用的有碳素彈簧鋼、合金彈簧鋼、不銹彈簧鋼以及銅合金、鎳合金和橡膠等。彈簧的制造方法有冷卷法和熱卷法。彈簧絲直徑小于8毫米的一般用冷卷法,大于8毫米的用熱卷法。有些彈簧在制成后還要進行強壓或噴丸處理,可提高彈簧的承載能力。

來源:hengyunabc ,

hengyunabc.github.io/depth-analysis-hibernate-validar-noclassdefounderror/

問題

可重現(xiàn)的Demo代碼:demo.zip

http://hengyunabc.github.io/img/demo.zip

最近排查一個spring boot應(yīng)用拋出hibernate.validator NoClassDefFoundError的問題,異常信息如下:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) ~[validation-api-1.1.0.Final.jar:na]

at org.springframework.boot.validation.MessageInterpolatorFactory.getObject(MessageInterpolatorFactory.java:53) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]

at org.springframework.boot.autoconfigure.validation.DefaultValidatorConfiguration.defaultValidator(DefaultValidatorConfiguration.java:43) ~[spring-boot-autoconfigure-1.5.3.RELEASE.jar:1.5.3.RELEASE]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_112]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_112]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_112]

at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_112]

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]

... 32 common frames omitted

這個錯誤信息表面上是NoClassDefFoundError,但是實際上ConfigurationImpl這個類是在hibernate-validator-5.3.5.Final.jar里的,不應(yīng)該出現(xiàn)找不到類的情況。

那為什么應(yīng)用里拋出這個NoClassDefFoundError ?

有經(jīng)驗的開發(fā)人員從Could not initialize class 這個信息就可以知道,實際上是一個類在初始化時拋出的異常,比如static的靜態(tài)代碼塊,或者static字段初始化的異常。

誰初始化了 org.hibernate.validator.internal.engine.ConfigurationImpl

但是當(dāng)我們在HibernateValidator 這個類,創(chuàng)建ConfigurationImpl的代碼塊里打斷點時,發(fā)現(xiàn)有兩個線程觸發(fā)了斷點:

public class HibernateValidator implements ValidationProvider<HibernateValidatorConfiguration> {

@Override

public Configuration<?> createGenericConfiguration(BootstrapState state) {

return new ConfigurationImpl( state );

}

其中一個線程的調(diào)用棧是:

Thread [background-preinit] (Class load: ConfigurationImpl)

HibernateValidator.createGenericConfiguration(BootstrapState) line: 33

Validation$GenericBootstrapImpl.configure() line: 276

BackgroundPreinitializer$ValidationInitializer.run() line: 107

BackgroundPreinitializer$1.runSafely(Runnable) line: 59

BackgroundPreinitializer$1.run() line: 52

Thread.run() line: 745

另外一個線程調(diào)用棧是:

Thread [main] (Suspended (breakpoint at line 33 in HibernateValidator))

owns: ConcurrentHashMap<K,V> (id=52)

owns: Object (id=53)

HibernateValidator.createGenericConfiguration(BootstrapState) line: 33

Validation$GenericBootstrapImpl.configure() line: 276

MessageInterpolatorFactory.getObject() line: 53

DefaultValidatorConfiguration.defaultValidator() line: 43

NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]

NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62

DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43

Method.invoke(Object, Object...) line: 498

CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Object, Method, Object...) line: 162

ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 588

DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1173

顯然,這個線程的調(diào)用棧是常見的spring的初始化過程。

BackgroundPreinitializer 做了什么

那么重點來看下 BackgroundPreinitializer 線程做了哪些事情:

@Order(LoggingApplicationListener.DEFAULT_ORDER + 1)

public class BackgroundPreinitializer

implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {

@Override

public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {

try {

Thread thread = new Thread(new Runnable() {

@Override

public void run() {

runSafely(new MessageConverterInitializer());

runSafely(new MBeanFactoryInitializer());

runSafely(new ValidationInitializer());

runSafely(new JacksonInitializer());

runSafely(new ConversionServiceInitializer());

}

public void runSafely(Runnable runnable) {

try {

runnable.run();

}

catch (Throwable ex) {

// Ignore

}

}

}, "background-preinit");

thread.start();

}

可以看到BackgroundPreinitializer類是spring boot為了加速應(yīng)用的初始化,以一個獨立的線程來加載hibernate validator這些組件。

這個 background-preinit 線程會吞掉所有的異常。

顯然ConfigurationImpl 初始化的異常也被吞掉了,那么如何才能獲取到最原始的信息?

獲取到最原始的異常信息

在BackgroundPreinitializer的 run() 函數(shù)里打一個斷點(注意是Suspend thread類型, 不是Suspend VM),讓它先不要觸發(fā)ConfigurationImpl的加載,讓spring boot的正常流程去觸發(fā)ConfigurationImpl的加載,就可以知道具體的信息了。

那么打出來的異常信息是:

Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;

at org.hibernate.validator.internal.util.logging.LoggerFactory.make(LoggerFactory.java:19) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.internal.util.Version.<clinit>(Version.java:22) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.internal.engine.ConfigurationImpl.<clinit>(ConfigurationImpl.java:71) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) ~[validation-api-1.1.0.Final.jar:na]

at org.springframework.boot.validation.MessageInterpolatorFactory.getObject(MessageInterpolatorFactory.java:53) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]

那么可以看出是 org.jboss.logging.Logger 這個類不兼容,少了getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object 這個函數(shù)。

那么檢查下應(yīng)用的依賴,可以發(fā)現(xiàn)org.jboss.logging.Logger 在jboss-common-1.2.1.GA.jar和jboss-logging-3.3.1.Final.jar里都有。

顯然是jboss-common-1.2.1.GA.jar 這個依賴過時了,需要排除掉。

總結(jié)異常的發(fā)生流程

應(yīng)用依賴了jboss-common-1.2.1.GA.jar,它里面的org.jboss.logging.Logger太老 spring boot啟動時,BackgroundPreinitializer里的線程去嘗試加載ConfigurationImpl,然后觸發(fā)了org.jboss.logging.Logger的函數(shù)執(zhí)行問題 BackgroundPreinitializer 吃掉了異常信息,jvm把ConfigurationImpl標(biāo)記為不可用的 spring boot正常的流程去加載ConfigurationImpl,jvm發(fā)現(xiàn)ConfigurationImpl類是不可用,直接拋出NoClassDefFoundError

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

深入JVM

為什么第二次嘗試加載ConfigurationImpl時,會直接拋出java.lang.NoClassDefFoundError: Could not initialize class ?

下面用一段簡單的代碼來重現(xiàn)這個問題:

try {

org.hibernate.validator.internal.util.Version.touch();

} catch (Throwable e) {

e.printStackTrace();

}

System.in.read();

try {

org.hibernate.validator.internal.util.Version.touch();

} catch (Throwable e) {

e.printStackTrace();

}

使用HSDB來確定類的狀態(tài)

當(dāng)拋出第一個異常時,嘗試用HSDB來看下這個類的狀態(tài)。

sudo java -classpath "$JAVA_HOME/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB

然后在HSDB console里查找到Version的地址信息

hsdb> class org.hibernate.validator.internal.util.Version

org/hibernate/validator/internal/util/Version @0x00000007c0060218

然后在Inspector查找到這個地址,發(fā)現(xiàn)_init_state是5。

再看下hotspot代碼,可以發(fā)現(xiàn)5對應(yīng)的定義是initialization_error:

// /hotspot/src/share/vm/oops/instanceKlass.hpp

// See "The Java Virtual Machine Specification" section 2.16.2-5 for a detailed deion

// of the class loading & initialization procedure, and the use of the states.

enum ClassState {

allocated, // allocated (but not yet linked)

loaded, // loaded and inserted in class hierarchy (but not linked yet)

linked, // successfully linked/verified (but not initialized yet)

being_initialized, // currently running class initializer

fully_initialized, // initialized (successfull final state)

initialization_error // error happened during initialization

};

JVM規(guī)范里關(guān)于Initialization的內(nèi)容

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.5

從規(guī)范里可以看到初始一個類/接口有12步,比較重要的兩步都用黑體標(biāo)記出來了:

5: If the Class object for C is in an erroneous state, then initialization is not possible. Release LC and throw a NoClassDefFoundError. 11: Otherwise, the class or interface initialization method must have completed abruptly by throwing some exception E. If the class of E is not Error or one of its subclasses, then create a new instance of the class ExceptionInInitializerError with E as the argument, and use this object in place of E in the following step.

第一次嘗試加載Version類時

當(dāng)?shù)谝淮螄L試加載時,hotspot InterpreterRuntime在解析invokestatic指令時,嘗試加載org.hibernate.validator.internal.util.Version類,InstanceKlass的_init_state先是標(biāo)記為being_initialized,然后當(dāng)加載失敗時,被標(biāo)記為initialization_error。

對應(yīng)Initialization的11步。

// hotspot/src/share/vm/oops/instanceKlass.cpp

// Step 10 and 11

Handle e(THREAD, PENDING_EXCEPTION);

CLEAR_PENDING_EXCEPTION;

// JVMTI has already reported the pending exception

// JVMTI internal flag reset is needed in order to report ExceptionInInitializerError

JvmtiExport::clear_detected_exception((JavaThread*)THREAD);

{

EXCEPTION_MARK;

this_oop->set_initialization_state_and_notify(initialization_error, THREAD);

CLEAR_PENDING_EXCEPTION; // ignore any exception thrown, class initialization error is thrown below

// JVMTI has already reported the pending exception

// JVMTI internal flag reset is needed in order to report ExceptionInInitializerError

JvmtiExport::clear_detected_exception((JavaThread*)THREAD);

}

DTRACE_CLASSINIT_PROBE_WAIT(error, InstanceKlass::cast(this_oop()), -1,wait);

if (e->is_a(SystemDictionary::Error_klass())) {

THROW_OOP(e());

} else {

JavaCallArguments args(e);

THROW_ARG(vmSymbols::java_lang_ExceptionInInitializerError(),

vmSymbols::throwable_void_signature(),

&args);

}

第二次嘗試加載Version類時

當(dāng)?shù)诙螄L試加載時,檢查InstanceKlass的_init_state是initialization_error,則直接拋出NoClassDefFoundError: Could not initialize class.

對應(yīng)Initialization的5步。

// hotspot/src/share/vm/oops/instanceKlass.cpp

void InstanceKlass::initialize_impl(instanceKlassHandle this_oop, TRAPS) {

// ...

// Step 5

if (this_oop->is_in_error_state()) {

DTRACE_CLASSINIT_PROBE_WAIT(erroneous, InstanceKlass::cast(this_oop()), -1,wait);

ResourceMark rm(THREAD);

const char* desc = "Could not initialize class ";

const char* className = this_oop->external_name();

size_t msglen = strlen(desc) + strlen(className) + 1;

char* message = NEW_RESOURCE_ARRAY(char, msglen);

if (NULL == message) {

// Out of memory: can't create detailed error message

THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className);

} else {

jio_snprintf(message, msglen, "%s%s", desc, className);

THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), message);

}

}

總結(jié)

彈力測試儀目的

本機專為沙發(fā)彈簧框架和彈簧包而設(shè)計的測試儀器,它可滿足以下三種測試要求

This tester is designed for the test of the zig-zag spring assembly and spring pack used in sofa manufacturing , it can perform the following 3 kinds of test requirements

1)耐久性測試 / Durability Tes 可按預(yù)設(shè)定之壓力條件進行重復(fù)按壓測試,周期可預(yù)設(shè)定,到數(shù)自動停止。

The spring undergone a repeated specific force , the test cycles is pre-settable, and the test stop when the set cycle is up.

2)壓縮量程與壓力關(guān)系檢測 / Fix stroke test

壓板按預(yù)設(shè)定行程下壓, 到位停止。在壓力表上讀取該行程的彈簧力.

The presser comes down to a specify stoke, read the force on that stroke from the pressure gauge.

3)特定壓力下彈簧壓縮量檢測 / Fix force test

壓板下壓至設(shè)定壓力后停止,顯示屏上顯示該壓力值的壓縮行程長度。

The presser comes down to a specify force, the presser stop and the compression rate (stroke)

will be displayed on the screen.

注:

a) 本機最大壓力 = 80 公斤, 最高按壓行程150 mm。

b) 壓力傳感器精度:0.3% FS

c) 行程精度 : ±0.2 mm

d)電源: 220伏, 功率= 400瓦

Vulcan Spring相關(guān)推薦
  • 相關(guān)百科
  • 相關(guān)知識
  • 相關(guān)專欄

最新詞條

安徽省政采項目管理咨詢有限公司 數(shù)字景楓科技發(fā)展(南京)有限公司 懷化市人民政府電子政務(wù)管理辦公室 河北省高速公路京德臨時籌建處 中石化華東石油工程有限公司工程技術(shù)分公司 手持無線POS機 廣東合正采購招標(biāo)有限公司 上海城建信息科技有限公司 甘肅鑫禾國際招標(biāo)有限公司 燒結(jié)金屬材料 齒輪計量泵 廣州采陽招標(biāo)代理有限公司河源分公司 高鋁碳化硅磚 博洛尼智能科技(青島)有限公司 燒結(jié)剛玉磚 深圳市東海國際招標(biāo)有限公司 搭建香蕉育苗大棚 SF計量單位 福建省中億通招標(biāo)咨詢有限公司 泛海三江 威海鼠尾草 Excel 數(shù)據(jù)處理與分析應(yīng)用大全 廣東國咨招標(biāo)有限公司 甘肅中泰博瑞工程項目管理咨詢有限公司 山東創(chuàng)盈項目管理有限公司 當(dāng)代建筑大師 廣西北纜電纜有限公司 拆邊機 大山檳榔 上海地鐵維護保障有限公司通號分公司 甘肅中維國際招標(biāo)有限公司 舌花雛菊 華潤燃氣(上海)有限公司 湖北鑫宇陽光工程咨詢有限公司 GB8163標(biāo)準(zhǔn)無縫鋼管 中國石油煉化工程建設(shè)項目部 韶關(guān)市優(yōu)采招標(biāo)代理有限公司 莎草目 建設(shè)部關(guān)于開展城市規(guī)劃動態(tài)監(jiān)測工作的通知 電梯平層準(zhǔn)確度 廣州利好來電氣有限公司 四川中澤盛世招標(biāo)代理有限公司