草庐IT

java - 从 SDK 21 迁移到 SDK 28

coder 2023-12-02 原文

我完成了这一步骤并解决了大部分问题,但是有一个问题我无法解决。进行了搜索并试图弄清结果,尝试了一些方法但仍然没有进展。问题似乎与应用程序中的样式/主题有关。

堆栈跟踪

Process: net.myapp.app.debug, PID: 14927
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.myapp.app.debug/net.myapp.app.ui.SplashSreenActivity}: android.view.InflateException: Binary XML file line #31: Binary XML file line #31: Error inflating class android.widget.TextView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: android.view.InflateException: Binary XML file line #31: Binary XML file line #31: Error inflating class android.widget.TextView
 Caused by: android.view.InflateException: Binary XML file line #31: Error inflating class android.widget.TextView
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
    at android.view.LayoutInflater.createView(LayoutInflater.java:647)
    at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:418)
    at android.app.Activity.setContentView(Activity.java:2654)
    at net.shopayard.app.ui.SplashSreenActivity.onCreate(SplashSreenActivity.java:42)
    at android.app.Activity.performCreate(Activity.java:6975)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x101009b a=1}
    at android.content.res.TypedArray.getColorStateList(TypedArray.java:538)
    at android.widget.TextView.<init>(TextView.java:904)
    at android.widget.TextView.<init>(TextView.java:818)
    at android.widget.TextView.<init>(TextView.java:814)
    at java.lang.reflect.Constructor.newInstance0(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:334) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:647) 
    at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:418) 
    at android.app.Activity.setContentView(Activity.java:2654) 
    at net.myapp.app.ui.SplashSreenActivity.onCreate(SplashSreenActivity.java:42) 
    at android.app.Activity.performCreate(Activity.java:6975) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

build.grade(应用程序)

apply plugin: 'com.android.application'

android {
    signingConfigs {
        debug {
            storeFile file('C:/Users/myapp/.android/debug.keystore')
        }
    }
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "net.myapp.app"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 22
        versionName '3.0.0'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            applicationIdSuffix '.debug'
            versionNameSuffix '.debug'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    productFlavors {
    }
    useLibrary 'org.apache.http.legacy'
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:28.0.0'
    compile 'com.android.support:recyclerview-v7:28.0.0'
    compile 'com.android.support:cardview-v7:28.0.0'
    compile 'com.viewpagerindicator:library:2.4.1'
    compile 'com.android.support:support-v4:28.0.0'
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.davemorrissey.labs:subsampling-scale-image-view:2.3.0'
    compile('org.apache.httpcomponents:httpmime:4.3.6') {
        exclude module: 'httpclient'
    }
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
    compile(name: 'analyticslibrary', ext: 'aar')
    compile 'com.google.android.gms:play-services-analytics:16.0.4'
}

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="colorPrimary">@color/primary_color</item>
        <item name="colorPrimaryDark">@color/primary_color_dark</item>
        <item name="colorAccent">@color/accent</item>
        <item name="actionBarSize">@dimen/abc_action_bar_default_height_material</item>
        <item name="colorSwitchThumbNormal">@color/switch_thumb_normal</item>
    </style>
    <style name="ToolbarThemeOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:subtitleTextStyle">@style/SubTitleTextStyle</item>
        <item name="subtitleTextStyle">@style/SubTitleTextStyle</item>
    </style>
    <style name="SubTitleTextStyle">
        <item name="android:textStyle">italic</item>
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">@color/text_white</item>
    </style>
    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
        <item name="color">@android:color/white</item>
    </style>
    <style name="SpinnerButton">
        <item name="android:minHeight">40dp</item>
        <item name="android:layout_marginLeft">@dimen/content_margin_normal</item>
        <item name="android:layout_marginRight">@dimen/content_margin_normal</item>
        <item name="android:background">@drawable/spinner_button_selector</item>
        <item name="android:textColor">@color/text_black</item>
        <item name="android:textSize">@dimen/text_size_medium</item>
        <item name="android:textStyle">italic</item>
    </style>
    <style name="EditTextRectangleStyle">
        <item name="android:layout_marginLeft">@dimen/content_margin_normal</item>
        <item name="android:layout_marginRight">@dimen/content_margin_normal</item>
        <item name="android:background">@drawable/black_rectangle</item>
        <item name="android:textColor">@color/text_black</item>
        <item name="android:textSize">@dimen/text_size_medium</item>
        <item name="android:textColorHint">@color/text_gray</item>
        <item name="android:textStyle">italic</item>
    </style>
    <style name="EditTextStyle">
        <item name="android:minHeight">40dp</item>
        <item name="android:layout_marginLeft">@dimen/content_margin_normal</item>
        <item name="android:layout_marginRight">@dimen/content_margin_normal</item>
        <item name="android:background">@drawable/edittext_bg</item>
        <item name="android:textColor">@color/text_black</item>
        <item name="android:textSize">@dimen/text_size_medium</item>
        <item name="android:textColorHint">@color/text_gray</item>
        <item name="android:textStyle">italic</item>
    </style>
    <style name="EditTextNoMarginsStyle">
        <item name="android:minHeight">40dp</item>
        <item name="android:background">@drawable/edittext_bg</item>
        <item name="android:textColor">@color/text_black</item>
        <item name="android:textSize">@dimen/text_size_medium</item>
        <item name="android:textColorHint">@color/text_gray</item>
        <item name="android:textStyle">italic</item>
    </style>
    <style name="FormLabelClickable" parent="FormLabelStyle">
        <item name="android:clickable">true</item>
        <item name="android:textColor">@color/clickable_black_text</item>
    </style>
    <style name="FormLabelStyle">
        <item name="android:minHeight">40dp</item>
        <item name="android:layout_marginLeft">@dimen/content_margin_normal</item>
        <item name="android:layout_marginRight">@dimen/content_margin_normal</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:textColor">@color/text_black</item>
        <item name="android:textSize">@dimen/text_size_medium</item>
        <item name="android:textStyle">italic</item>
    </style>
    <style name="StandardSwitch" parent="FormLabelStyle" >
        <item name="android:padding">1dp</item>
        <item name="android:textColor">@color/switch_text_dark_gray</item>
    </style>
    <style name="SwitchLabelStyle">
        <item name="android:paddingRight">@dimen/content_margin_normal</item>
        <item name="android:textColor">@color/text_gray</item>
        <item name="android:textSize">@dimen/text_size_small</item>
    </style>
    <style name="CustomTabPageIndicator">
        <item name="android:background">@color/primary_color</item>
        <item name="android:textSize">12sp</item>
        <item name="pstsTextAllCaps">true</item>
        <item name="android:maxLines">1</item>
        <item name="android:textColor">#FFAAAAAA</item>
        <item name="pstsIndicatorColor">#FFFFFF</item>
        <item name="pstsDividerColor">@android:color/transparent</item>
        <item name="pstsShouldExpand">true</item>
        <item name="pstsIndicatorHeight">4dp</item>
        <item name="pstsTabPaddingLeftRight">1dp</item>
        <item name="pstsUnderlineColor">#FFFFFF</item>
        <item name="pstsUnderlineHeight">0dp</item>
    </style>
    <style name="ButtonBar">
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingTop">5dp</item>
        <item name="android:paddingRight">2dp</item>
        <item name="android:paddingBottom">0dp</item>
        <item name="android:background">@android:drawable/bottom_bar</item>
    </style>
    <style name="dialog_popup_slideout">
        <item name="android:windowExitAnimation">@anim/slide_out_dialog</item>
    </style>
    <style name="dialog_slidein_slideout">
        <item name="android:windowEnterAnimation">@anim/slide_in_dialog</item>
    </style>
    <style name="dialog_slidein_left_slideout">
        <item name="android:windowEnterAnimation">@anim/slide_in_left</item>
        <item name="android:windowExitAnimation">@anim/slide_out_dialog</item>
    </style>
    <style name="ButtonBarButton" />
    <style name="FullscreenTheme" parent="android:Theme.NoTitleBar">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@null</item>
        <item name="metaButtonBarStyle">@style/ButtonBar</item>
        <item name="metaButtonBarButtonStyle">@style/ButtonBarButton</item>
    </style>
    <style name="FullscreenTheme.NoActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@null</item>
        <item name="metaButtonBarStyle">@style/ButtonBar</item>
        <item name="metaButtonBarButtonStyle">@style/ButtonBarButton</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">false</item>
    </style>
    <style name="NumberPickerDialog" parent="DialogCenteredTitle">
        <item name="android:layout_width">280dp</item>
    </style>
    <style name="DialogCenteredTitle" parent="Base.Theme.AppCompat.Light.Dialog">
        <item name="android:windowTitleStyle">@style/CenteredTitle</item>
        <item name="colorAccent">@color/accent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
    </style>
    <style name="CenteredTitle" parent="Base.TextAppearance.AppCompat.Title">
        <item name="android:gravity">center</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginBottom">8dp</item>
    </style>
    <style name="RedRectangularButton" parent="BlueRectangularButton">
        <item name="android:background">@drawable/red_rectangle_button_bg_selector</item>
    </style>
    <style name="BlueRectangularButton">
        <item name="android:minHeight">40dp</item>
        <item name="android:paddingLeft">@dimen/rectangular_button_horizontal_margin</item>
        <item name="android:paddingRight">@dimen/rectangular_button_horizontal_margin</item>
        <item name="android:textColor">@color/button_text_white</item>
        <item name="android:background">@drawable/blue_rectangle_button_bg_selector</item>
        <item name="android:textAllCaps">true</item>
    </style>
    <style name="ImageViewAttachment">
        <item name="android:width">0dp</item>
        <item name="android:minHeight">@dimen/select_image_min_height</item>
        <item name="android:scaleType">fitCenter</item>
        <item name="android:background">@drawable/dashed_rectangle_selector</item>
        <item name="android:layout_weight">0.25</item>
        <item name="android:src">@drawable/symbol_camera</item>
        <item name="android:adjustViewBounds">true</item>
    </style>
</resources>

Activity .xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/splash_background"
    tools:context="net.myapp.app.ui.SplashSreenActivity">
    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/image_menu"
        android:layout_alignParentBottom="true"
        android:adjustViewBounds="true"
        android:scaleType="fitEnd"/>
    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone"/>
    <LinearLayout
        android:id="@+id/layoutError"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center_horizontal"
        android:paddingBottom="100dp"
        android:orientation="vertical"
        android:visibility="gone">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:textColor="@color/text_black"
            android:gravity="center_horizontal"
            android:textSize="16sp"
            android:text="@string/error_maintenance"/>
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/content_margin_normal">
            <Button
                android:id="@+id/buttonRetry"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:textColor="@color/text_white"
                android:textSize="12sp"
                android:text="@string/retry"
                android:background="@drawable/circle_button_blue_selector"/>
            <ProgressBar
                android:id="@+id/progressBarRetry"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="?android:attr/progressBarStyleSmall"
                android:layout_centerInParent="true"
                android:visibility="invisible"/>
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>

字符串.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">myapp</string>
    <string name="ic_action_search">Search</string>
    <string name="ic_action_profile">Profile</string>
    <string name="ic_action_refresh">Refresh</string>
    <string name="action_call">Call</string>
    <string name="action_email">Email</string>
    <string name="action_share">Share</string>
    <string name="action_location">Location</string>
    <string name="action_report">Report</string>
    <string name="navigation_drawer_open">Open navigation drawer</string>
    <string name="navigation_drawer_close">Close navigation drawer</string>
    <string name="action_settings">Settings</string>
    <string name="hello_blank_fragment">Hello blank fragment</string>
    <string name="register_below">Register below to receive deals and promotions from local businesses.</string>
    <string name="gender">Gender</string>
    <string name="birth_year">Year of birth</string>
    <string name="island">Island</string>
    <string name="button_done">Done</string>
    <string name="button_ok">OK</string>
    <string name="loading">Loading...</string>
    <string name="title_activity_profile">Profile</string>
    <string name="title_activity_deals_details">DealsDetailsActivity</string>
    <string name="title_activity_fullscreen_image">FullscreenImageActivity</string>
    <string name="title_activity_classified_details">ClassifiedDetailsActivity</string>
    <string name="title_activity_splash_sreen">SplashSreenActivity</string>

    <!-- Splash screen -->
    <string name="retry">Retry</string>
    <string name="retry_failed">Retry failed</string>
    <string name="error_maintenance">The servers are currently undergoing maintenance, please try again in a few minutes.</string>
</resources>

颜色.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="primary_color_clicked">#0071a8</color>
    <color name="primary_color">#004A77</color>
    <color name="primary_color_dark">#004368</color>
    <color name="switch_thumb_normal">#004A77</color>
    <color name="switch_text_dark_gray">#464646</color>
    <color name="accent">#80A4BB</color>
    <color name="orange">#EA5C04</color>
    <color name="dark_red">#A00809</color>
    <color name="red_divider">#A91F20</color>
    <color name="line_light_gray">#D9D9D9</color>
    <color name="text_blue">#004A77</color>
    <color name="text_white">#FFFFFF</color>
    <color name="text_gray">#969696</color>
    <color name="text_content_dark">#333</color>
    <color name="text_dark_red">#980000</color>
    <color name="tab_text_inactive">#98b6c8</color>
    <color name="text_orange">#E74700</color>
    <color name="text_black">#111111</color>
    <color name="text_black_focused">#888888</color>
    <color name="button_blue">#004A77</color>
    <color name="button_blue_focused">#0075BA</color>
    <color name="menu_list_divider">#9DD0F5</color>
    <color name="menu_selected_item_background">#D6EDFF</color>
    <color name="black_overlay">#66000000</color>
    <color name="search_background">#A7D9FE</color>
    <color name="splash_background">#A6D8FD</color>
    <color name="darken_filter_color">#22000000</color>
    <color name="classified_id_background">#DDDDDD</color>
    <color name="red_button">#A00809</color>
    <color name="red_button_focused">#f40809</color>
</resources>

这个问题似乎与 FullscreenTheme 或 FullscreenTheme.NoActionBar 有关,因为我一直在测试不同的方法,并且在更改这些方法时得到了不同的堆栈跟踪。然而,上面的代码在 SDK 21 中运行良好。我觉得训练有素的眼睛会立即发现问题,但遗憾的是我不是日常程序员。

最佳答案

它清楚地表明找不到@string/error_maintenance。 尝试clean project 并查看它是否具有名为 error_maintenance 的 String 资源。

此外,之前,在我的项目中,我能够创建一个带有“error.maintenance”之类的点的字符串资源,并使用 @string/error_maintenance 调用它。 从 api 28 开始,我不得不删除 strings.xml 中的每个点

关于java - 从 SDK 21 迁移到 SDK 28,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240046/

有关java - 从 SDK 21 迁移到 SDK 28的更多相关文章

  1. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  2. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  3. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  4. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  5. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  6. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  7. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  8. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  9. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  10. java - Ruby 相当于 Java 的 Collections.unmodifiableList 和 Collections.unmodifiableMap - 2

    Java的Collections.unmodifiableList和Collections.unmodifiableMap在Ruby标准API中是否有等价物? 最佳答案 使用freeze应用程序接口(interface):Preventsfurthermodificationstoobj.ARuntimeErrorwillberaisedifmodificationisattempted.Thereisnowaytounfreezeafrozenobject.SeealsoObject#frozen?.Thismethodretur

随机推荐