WTK使用简介——使用入门

WTK进阶使用教程 声明:本文为原创文章!作者:hudelong1、设置模拟器的永久存储和堆栈WTK关于存储的设置包括永久存储(RMS)设置和堆栈(Heap)设置,从“开始”菜单中选择:程序- J2ME Wireless Toolkit2.2 - Preferences命令,然后单击【存储设置(Storage)】标签: 存储.png (3.33 KB)2006-10-12 10:27  阅读详情

J2ME Wireless Toolkit(WTK)是常用的J2ME SDK,使用WTK可以进行程序的编译、校验、运行。有关WTK的信息可查询如下网址%3
http://java.sun.com/products/j2mewtoolkit。q%@
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  y5
 目前最新版本是WTK2.1,该版本支持JTWI(无线产业Java技术规范)Roadmap 1、CLDC1.1和J2ME Web Services API。本文主要介绍WTK2.0版本,该版本支持许多新的技术规范,如MIDP2.0、移动媒体API、无线消息API等。:
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  '=
软件下载与安装71
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  {q8g#l
WTK2.0需要JDK1.4版本的支持,可从如下网址下载JDK1.4:d6
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  ^w/
http://java.sun.com/j2se/1.4.2/downloads/index.htmlqgF9-n
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  O6
WTK2.0可从如下网址下载>|PjZf
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  +
http://java.sun.com/products/j2mewtoolkit/download-2_0.htmlNmI
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  XJ-C
   下载以后先安装JDK,然后安装WTK。安装WTK时会询问JDK的安装路径,如下图所示,请在这一步指定正确的JDK路径l
©中国JAVA手机网 -- 做最专业的Java用户论坛,为Java开发者提供最全面的资料  jzV2


WTK2.0环境的使用

   安装完成后,就可以使用WTK2.0了。首先启动ktoolbar,该程序在WTK20/bin目录下。ktoolbar运行窗口如下图所示:


 在图中所示的ktoolbar界面上,菜单和工具栏用于执行各种功能,包括新建工程、打开工程、应用程序的编译生成、打包、部署等。下拉列表框用于选择运行应用程序时所用的模拟器。最下面的区域显示系统控制台输出。    


 

 




在ktoolbar中,选择【File】|【Open Project】或单击工具栏上的【Open Project】按钮,将会弹出如下图所示的窗口。从该窗口列表中选择一个工程,如“photoalbum”,单击【Open Project】按钮,打开该工程。


打开工程后的ktoolbar如下图所示,对比上面ktoolbar的界面可以看出一些原来不可用的按钮现在都可以使用了。

单击工具栏上的【Run】按钮,会弹出模拟器窗口。用鼠标单击模拟器上的【Select】键或使用键盘上的回车键,可以选择模拟器中的项目运行,下图是一段动画应用程序运行中的快照。

WTK2.0提供了四种样式和肤色各不相同的模拟器可供使用,除了上面所示的默认的彩色模拟器外,还提供了一个黑白模拟器、一个媒体控制模拟器和一个带标准键盘的模拟器QwertyDevice。使用ktoolbar上的Device下拉列表框,可以选择不同的模拟器。QwertyDevice模拟器如下图所示。

 

下面介绍如何使用WTK编译运行自己编写的应用程序。首先给出手机上的Hello World程序。

建立源文件

   建立文件Hello.java,其内容如下:

import javax.microedition.midlet.MIDlet;

import javax.microedition.lcdui.*;
public class Hello extends MIDlet

{

        private Display display;

        public Hello(){

        }

        public void startApp(){

                  display=Display.getDisplay(this);

                  TextBox t=new TextBox("Demo App","Hello World",256,0);

                  display.setCurrent(t);

        }

        public void pauseApp(){

        }

        public void destroyApp(boolean unconditional){

        }
}

 

 

 

编译运行程序

   在ktoolbar界面中,单击【New Project】按钮,在弹出的窗口中输入如下图所示的数据。


  然后单击【Create Project】,将出现下图所示的工程设置窗口。在该窗口中可以设置工程的各种属性,此时先接受默认设置,单击【OK】

WTK把所有工程都放在WTK20/apps/目录下。创建工程后检查该目录,会发现多出一个HelloWorld文件夹。在该文件夹中又有四个文件夹:src、res、lib和bin。其中“src”用于存放源文件,“res”存放程序所需的资源文件,“lib”存放程序所需的库文件,刚创建工程时这三个目录下没有任何文件。在“bin”目录下有两个文件,“MANIFEST.MF”和“HelloWorld.jad”。“MANIFEST.MF”是清单文件,记录了工程的各种属性信息,“HelloWorld.jad”记录的内容与“MANIFEST.MF”类似,使用手机从网上下载Java软件时会用到该文件。这两个文件的内容都可以用普通的编辑程序修改,也可以在上图所示的工程设置窗口中修改。在创建工程后,选择【Project】|【Settings…】菜单或单击工具栏上的【Settings…】按钮,都可以打开工程设置窗口。

   将Hello.java文件复制到HelloWorld/src目录下,然后单击ktoolbar上的【Build】按钮编译源程序。如果源程序有错误,控制台会显示相应的错误信息。如果编译成功会在控制台显示如下信息:

Project settings saved

Building "HelloWorld"

Build complete

   源程序编译成功后,单击工具栏上的【Run】按钮运行程序,单击模拟器上的【Select】按钮进入程序,如下图所示。



写这篇教程希望能达到抛砖引玉的效果,有什么不懂可以跟帖。

 

wtk2.5.2 驱动资源免费下载 wtk2.5.2 驱动资源免费下载,java的朋友们 需要下载wtk的可以点击 立即下载

相关推荐

wtk2.2资源下载

很多人想下载wtk2.2,但是sun的官方网站很难下得了,共享下

WTK 2.5.2安装包

http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/sun_java_wireless_toolkit-2_5_2-ml-windows.exe?BundledLineItemUUID=pnlIBe.pZU4AAAEj2WAMk9yO&Ord...

u013352583的博客 3517

wtk2.2压缩包下载

此插件可在eclipse软件中使用,用于开发手机移动设备软件及游戏。

搭建开发平台—WTK

主要讲述J2ME新手最常使用的开发工具Wireless Toolkit(WTK)。从WTK的安装、到MIDlet项目的创建、以及最后的打包发布,一步步带领读者进入MIDlet的开发世界! 1 什么是J2ME Wireless Toolkit WTK 的全称是Sun J2ME Wireless Toolkit —— Sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me...

dch1287的专栏 238

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1533

我从华为身上学到的项目管理经验 -- 需求篇

记录这三年,关于项目管理上的一些心得体会 – 需求篇对于需求,我们可以根据不同的角色、理解拆分成三个过程:简单来说就是:需求分析原始需求、 需求拆分为系统需求、 需求实现为功能需求**需求分析**: 将客户需求 输出成 需求描述。 需求经理需要把 需求 转换成 客户能够接受的 初始需求 IR(Initial Requirement) 对于用户来说,我只管提 我的原始需求是

minminzhe520的博客 3万+

Sun Java Wireless Toolkit 开发手机程序入门指南(1)

Sun Java Wireless Toolkit 开发手机程序入门指南(1)    此文档主要用来讲解使用sun java WTK工具来开发基本的j2me手机程序。主要包含开发环境的搭建、MIDLet小程序开发流程、WTK环境设置、程序监控等等。 首先来看一下相关术语:J2SE : JAVA 2 Standard Edition, Java 2 的标准版。J2ME :

竹海听涛 3144

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 566

WTK使用简介(一)——使用入门

J2ME Wireless Toolkit(WTK)是常用的J2ME SDK,使用WTK可以进行程序的编译、校验、运行。有关WTK的信息可查询如下网址http://java.sun.com/products/j2mewtoolkit。   目前最新版本是WTK2.1,该版本支持JTWI(无线产业Java技术规范)Roadmap 1、CLDC1.1和J2ME Web Services API。本文主

虫二的专栏~~在路上~~~ 3737

ADRC自抗扰控制:工程抗扰“黑科技”,附C代码实战!

自抗扰控制(ADRC)是一种革新性的强鲁棒控制策略,通过主动估计和补偿系统扰动,无需精确数学模型即可实现优异控制性能。本文详细解析ADRC三大核心组件:跟踪微分器(TD)实现指令柔化,扩张状态观测器(ESO)实时估计总扰动,非线性状态反馈(NLSEF)完成动态补偿。针对二阶系统,文章提供完整的参数设计方法和C语言实现框架,包括关键函数fhan和fal的代码实现。ADRC将复杂对象"线性化"为积分器串联系统,显著提升抗扰能力,特别适用于电机控制、飞行器姿态等存在模型不确定性和强干扰的场景。

技术工作者 1738

Android应用之【巧妙隐藏桌面图标的进阶方案】

本文详细探讨了Android应用中隐藏桌面图标的进阶方案,解决了传统方法在Android 10及以上版本中出现的黑色图标残留问题。通过Intent-Filter配置和厂商适配技巧,实现子应用真正隐身,同时确保主应用正常启动。适用于企业工具套件、模块化系统等场景,提升用户体验和安全性。

weixin_28363123的博客 513

WTK的使用方法

WTK的使用方法 在C:/WTK2.5.1/bin(一般情况下是安装在C:/WTK2.5.1/的)文件夹中,你可以找到一个叫ktoolbar.exe的可执行文件,双击打开它,显示一个主窗口,就可以使用这个来开发J2ME程序了.  首先,新建工程,点击New Project...      ,弹出New Project对话框, 在Project Name这一栏填写工程名,(如j2me), 在MID

James的专栏 3428

结构光之相移法+多频外差的数学原理推导

‍论文:基于数字光栅投影的结构光三维测量技术与系统研究 [博]作者:李中伟 华中科技大学 2007功能:相移法:多频外差(三频N步相移法)01 相移法图1 待写入投影仪的理想N步相移条纹通常对于 步相移来说,生成第 幅条纹图像(如图1所示)的公式如下:402 Payment Required其中::背景光强:调制强度:像素点横向坐标:相移值图2 相机拍摄到的实际 N ......

3D视觉工坊 1190

WTK打包详解

WTK打包详解 最近在做一个j2me手机游戏,我用的是Eclipse+Eclipseme做的。东西完成后却遇到了打包的问题。用Eclipse打包很简单工程右键——j2me——Create Package会在工程下有个deployed的文件里产生两个**.jad,**.jar但是放到手机上确说有异常。上网查了很久!都说是jad文件少了MIDlet-1:程序名,图标,入口类。但是这样加很麻烦。

gzylovewj的专栏 2566

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1319

搭建开发平台WTK

 

小杨在线 1847

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux下安装WTK手记

1.首先去SUN的网站下载WTK2.2和它的补丁包,本来想去下载一个最新的2.5Beta,可是只有Windows版,没有Linux版的。我晕,SUN什么时候优先支持Windows了。2.运行下载得到的文件j2me_wireless_toolkit-2_2-ml-linux-i386.bin,安装程序是控制台运行的,没有图形界面。首先是一个长长license声明,最后提示Do you agree t

infowain的专栏 3499

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

集成Sony Ericsson WTK 和 NOKIA WTK(包括retroguard)

nokia有自己的api,所以在SE WTK编译nokia版本的程序,如果代码中含有FullCanvas等nokia专门的类,那么必定抛出ClassNotFound异常。要解决这个问题,可以将SE和NOKIA的WTK集成在一起,以方便使用。首先,将nokia/devices/下的文件夹(例如 Nokia_7210_MIDP_SDK_v1_0)copy到SonyEricsson/J2ME_SDK/P

goldAlex的专栏 2261

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

J2ME学习——从WTK到厂商SDK(转)

对于J2ME爱好者来说,基本上大家都是从SUN的WTK(J2ME Wireless Toolkit)开始的,但是对于实际应用来说,仅仅使用WTK是远远不够的,所以在学习过程中,必须完成从WTK到SDK的跨越。1、 厂商SDK的下...

cuankuangzhong6373的博客 179
上一篇: JSP实战型程序连载:通用数据库连接JavaBean
下一篇: 一个老菜鸟的J2ME心得
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值